5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C/C++の宿題をやらせろや!!!

1 :C++厨 ◆vKuy6bx7T2 :03/01/08 11:19
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
ついでに今はJavaと基本情報もやっている。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m

前スレ(2代目): http://pc3.2ch.net/test/read.cgi/tech/1039772622/l50
宿題手伝いますYO!!: http://pc3.2ch.net/test/read.cgi/tech/1038024989/l50

2 :デフォルトの名無しさん:03/01/08 11:21
迷惑です。

3 :C++厨 ◆vKuy6bx7T2 :03/01/08 11:26
>>2 うっさいわ!

>>3-999
俺が留守の時はどなたか俺を騙って慎ましやかに進行おながいしますm(_ _)m

4 :デフォルトの名無しさん:03/01/08 11:28
糞スレワッショイ!!

5 :C言語:03/01/08 14:06
とりあえず、質問すると思うので保守〜。


6 :デフォルトの名無しさん:03/01/08 14:12
ていうか前スレにポインタくらい貼っとけ。
更に言えば、前スレは2代目じゃねえ。

7 :デフォルトの名無しさん:03/01/08 14:22
>>6
c++厨のくせにポインタを知らなかったんだよ>>1は。
こんなリスト構造作ったら赤点どころかハングアップもしかねん。

8 :デフォルトの名無しさん:03/01/08 14:53
保守。

9 :デフォルトの名無しさん:03/01/08 15:11
どうしてうんこは臭いんですか?

10 :デフォルトの名無しさん:03/01/08 15:15
臭いと思うから臭いのであって
それはあなたの思い込み

11 :デフォルトの名無しさん:03/01/08 15:20
>>10
そんな事ないと思うぞ。運子は確かに臭いです。食えません。

12 :デフォルトの名無しさん:03/01/08 15:25
すべて思い込みです
食えると思えば食える
食う人もいるのですから

13 :デフォルトの名無しさん:03/01/08 15:30
>>12
ウンコって食うと苦い味がするそうですが、本当ですか!?

14 :デフォルトの名無しさん:03/01/08 15:36
苦い中にほのかな甘さを覚える人もいます
ぜひお試しください

15 :デフォルトの名無しさん:03/01/08 15:38
>>14
食糞健康法って奴ですね。
失敗すると即死するという諸刃の剣らしいですから、注意して
試してみます。
でも、できれば自分の糞でなくて彼女の糞、それも下痢弁を
食べてみたいです。

16 :デフォルトの名無しさん:03/01/08 15:48
なんだかうんこたべてみたくなっちゃったみたい

17 :デフォルトの名無しさん:03/01/08 15:51
988 :デフォルトの名無しさん :03/01/08 06:01
学校の宿題で全然わからず困っております。問題は以下の通りです。

[問題]CPUのシミュレータ
CPUの動作を模擬するプログラムを書いてみよう。
CPUは、命令をメモリから取り出し、その命令に基づいた動作をする。
動作は例えばメモリからデータを読み出してCPU内のレジスタにコピーしたり、加減乗除演算をしたりする。
この一連の動きを真似るプログラムを書く。
CPUは、8ビット演算、メモリ容量は32ワード、入出力は2進数で表示。
動作の検証には、簡単なプログラムをメモリ上に用意し、
それを1ステップごとに実行した結果を表示する。

命令部分はswitch文を使うのはわかるのですが、
2進数による入出力というのができず、全体的にどのようにすれば良いかもわかりません。
どうかお願いします。

18 :デフォルトの名無しさん:03/01/08 15:54
>>17
マルチ氏ね
CASL/COMETでも出しとけ

19 :C++厨 ◆vKuy6bx7T2 :03/01/08 16:21
>>6
スレが立った時間見ろや
3代目な気分もするが気にすんな

>>17
引き篭もりなんでわからん
>>18サソに従うよろしい。

20 :デフォルトの名無しさん:03/01/08 16:53
せめてスレタイに何代目か書いてくれよー。

21 :デフォルトの名無しさん:03/01/08 16:54
まあ黙ってうんこ食え

22 :C++厨 ◆vKuy6bx7T2 :03/01/08 17:03
いちお ! の数でを表そうとしたんだが…
わかりにくかった、すまん。

23 :デフォルトの名無しさん:03/01/08 17:09
厨がスレ立てんな

24 :IP記録実験:03/01/08 21:27
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

25 :デフォルトの名無しさん:03/01/09 02:15
荒れているところ恐縮ですが質問をしてよろしいでしょうか?
int型i×jの配列(2次元)においてある条件に達した成分だけを
消す(表示しない)方法を教えてください。

26 :デフォルトの名無しさん:03/01/09 02:17
>>25
用件がよくわからんが、printf() とかに if でもつけたらどうだ?

27 :デフォルトの名無しさん:03/01/09 02:40
>>584
バイソン

28 :デフォルトの名無しさん:03/01/09 03:22


      中傷・犯罪予告するなら今のウチという事ですか・・・・・・・・。

 

29 :デフォルトの名無しさん:03/01/09 04:05
誰か、出るっ、出ますうっ のテンプレでセンスのいいやつ考えて。

30 :デフォルトの名無しさん:03/01/09 11:37
角度を0度から360度まで10度おきに変えて、正弦関数sin(x)の値を計算するプログラムの作り方を教えてください。
sin関数を使うとき、引数となる角度の単位はラジアンでお願いします。



31 :デフォルトの名無しさん:03/01/09 12:00
#include <stdio.h>
#include <math.h>

#define PI 3.1415926535
#define rad (dig/360)*2*PI

int main()
{
int dig;
double res;

for(dig = 0; dig <= 360; dig+=10)
{
res = sin(rad);
}
}

はい。計算するプログラム。
表示とかしてないけど。

32 :30:03/01/09 12:06
>>31
ありがとうございました。これをもとにがんばらせていただきます。

33 :デフォルトの名無しさん:03/01/09 16:19
糞スレワッショイ!!

34 :デフォルトの名無しさん:03/01/09 17:18
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

35 :初心者です:03/01/09 18:47
char *str;
 ・
 ・
char型のポインタを宣言したあとに、標準入力からポインタに文字列を格納したいのですが・・・。

scanf("%s",str);
だと格納できないと聞きました。(入門書に書いてあった。)
なにか、この状況でポインタに文字列を格納する方法はないのでしょうか?

誰かご教授おねがいします。(゜゜)(。。)ペコリ

36 :名無し募集中。。。 :03/01/09 19:33
>>35
ポインターに文字列を入れようとしてる時点で君は終わっている・・・

37 :デフォルトの名無しさん:03/01/09 19:48
>>35
char ch[80];
char *str = ch;
scanf("%s", str);

38 :C++厨:03/01/09 19:51
>>35
初めましてこんにちわ。C++厨です。
Cは忘れましたが適当に

char *str = (char*)malloc(sizeof(char)*256);
scanf("%s", str);

どうでしょうか。

39 :C++厨:03/01/09 19:53
free(str);
も忘れないでね、書いてないけど。

40 :デフォルトの名無しさん:03/01/09 19:56
エラー対策も忘れんなよ。

41 :デフォルトの名無しさん:03/01/09 19:57
C言語なのですが・・・・
S<=(P-R)*t/(1-pow(1+t,-n))
という演算をやろうとすると
0で割っています、と言われます。
何故でしょうか?
尚、S,R,P,nはintで、tはdoubleです。


42 :デフォルトの名無しさん:03/01/09 20:21
ふつうにnが0なのでは?
でもぜんぜん書き込めないね


43 :41:03/01/09 20:31
>42
いえ、n=1で始めています。

44 :デフォルトの名無しさん:03/01/09 20:35
じゃあ桁あふれで0になるのでないの?

45 :デフォルトの名無しさん:03/01/09 20:42
つか
double z;
z=1-pow(1+t,-n);
if(!z) return;
S<=(P-R)*t/z;
でにげ

46 :41:03/01/09 20:43
>44
この場合、桁あふれを起こさないようにするには
Sをdoubleにしておけばいいのでしょうか?

47 :41:03/01/09 20:47
>45
すみません、私の勉強不足で
if(!z) return;
の意味が分かりません。
理解できたら使ってみます・・・

48 :デフォルトの名無しさん:03/01/09 20:49
if(z==0) return;
を分かりにくくして「俺C言語得意だぜ」と自己満足する書き方。

49 :たろう:03/01/09 20:49
以下に記すPerlのサブルーチンayayaに、
a0YaAya56m1a23yaiay5Aka4ya0Ay1AiaY2ata00yata4Yay
このような文字列を引数として渡すとその戻り値は何になるか。


$pass = &ayaya('a0YaAya56m1a23yaiay5Aka4ya0Ay1AiaY2ata00yata4Yay');

sub ayaya{
$string = @_[0];
$string =~ s/\d+//g;
$string =~ s/aya//ig;
return $string;
}

50 :41:03/01/09 20:59
>48
自己満足はともかく、勉強になります・・・

おかげさまで解決しました。
下らない質問に付き合っていただき、有難うございました。

51 :デフォルトの名無しさん:03/01/09 21:09
S<=(P-R)*t/(1-pow(1+t,-n))

S<=(P-R)*t/(1.0-pow(1.0+t,-n));
ではだめすか?

52 :デフォルトの名無しさん:03/01/09 22:04
Visual C++6.0を注文したらVisual C++.netが届いた今日
これでC言語ってコンパイルできるの?

53 :デフォルトの名無しさん:03/01/09 23:02
コピペ爆撃はpc3全板の全スレなんだろうか。
スレが読み辛い…。

54 :超初心者(1/2):03/01/09 23:07
次のプログラムで全ての辺の数字の和が同じになるようにしたいんです。
これだとうまくいくんですが、私がやりたいのは
#define N 9で指定している部分を自分で入力したいというものなんですが
何度やってもうまく行きません…。
助言をお願いいたします。

55 :超初心者(2/2):03/01/09 23:08
#include <stdio.h>
#define N 9
void main(void)
{int hojin[N+1][N+1],i,j,k;

if (N%2==0)
{printf("エラー!奇数にしてよ\n");}
else{
j=(N+1)/2; i=0;
for(k=1; k<=N*N; k++)
{
if(k%N==1)
i++;
else{
i--; j++;
}
if(i==0)
i=N;
if(j>N)
j=1;
hojin[i][j]=k;
}
printf("魔方陣(一辺%d)\n",N);
for(i=1; i<=N; i++)
{
for(j=1;j<=N; j++)
printf("%4d",hojin[i][j]);
printf("\n");
}
}
}

56 :デフォルトの名無しさん:03/01/09 23:24
int hojin[N+1][N+1],
ここを動的確保しないとだめ

57 :デフォルトの名無しさん:03/01/10 00:53
>>545
おまい必死だなw

58 :デフォルトの名無しさん:03/01/10 02:44
#include <stdio.h>
#include <malloc.h>
void main(void){
int n,i,j,k;
int *hojin;
printf("入力しやがれ:");
scanf("%d", &n);
hojin=(int*)malloc(sizeof(int)*(n+1)*(n+1));
if(hojin==NULL) return;
if (n%2==0) printf("エラー!奇数にしてよ\n");
else{
j=(n+1)/2; i=0;
for(k=1; k<=n*n; k++){
if(k%n==1) i++;
else i--; j++;
if(i==0) i=n;
if(j>n) j=1;
*(hojin+i*n+j)=k;
}
printf("魔方陣(一辺%d)\n",n);
for(i=1; i<=n; i++){
for(j=1;j<=n; j++) printf("%4d",(int)*(hojin+i*n+j));
printf("\n");
}}
free(hojin);
} // こんなかんじ?

59 :デフォルトの名無しさん:03/01/10 05:44
二次元配列でつかいたいならこういうのもあり
でも確保と開放がちょっとめんどう

int **hojin;
hojin=(int**)malloc(sizeof(int*)*(N+1));
for(i=0;i<N+1;i++)
hojin[i]=(int*)malloc(sizeof(int)*(N+1));

for(i=0;i<N+1;i++)
free(hojin[i]);
free(hojin);



60 :デフォルトの名無しさん:03/01/10 09:34
んじゃ、今俺の手元に届いた、この訴状の中の
原告の主張「内容証明が届いた時点で、名誉毀損を知りえたから、
削除する義務があるはず」というのは、
訴状が届いた時点で削除すれば問題なってことかな。

61 :デフォルトの名無しさん:03/01/10 09:54
んじゃ、今俺の手元に届いた、この訴状の中の
原告の主張「内容証明が届いた時点で、名誉毀損を知りえたから、
削除する義務があるはず」というのは、
訴状が届いた時点で削除すれば問題なってことかな。

62 :デフォルトの名無しさん:03/01/10 10:13
>>62
違います(w
もう、だめぽ。
君は頭の作りを変えないと理解できないようだ。
訴状でも名誉毀損だと確定してるはずが無いだろう。
だから「認識しえた」といってるんだよ。
その説明は>>50あたりだな。

63 :デフォルトの名無しさん:03/01/10 10:47
それで規制厳しくして金集めたいのかもね。
書いた奴を特定して差し出せばいいのにね。ネットカフェなら
ネットカフェにも問題がある。
このままでは他にも訴えられるだろ。

64 :質問:03/01/10 11:23
これ教えて下さい。

5つの数値を入力した時に、その平均、最大値、最小値を求める
プログラムを作れ.(実数も計算できるようにする)
なお,配列,繰り返し文(3種類のうちどれか)
を使用して作成せよ.

65 :デフォルトの名無しさん:03/01/10 11:29
猪木!ボンバイエ!(ファイッ!ファイッ!×2)

66 :& ◆FqjYALgRwE :03/01/10 11:33
猪木!ボンバイエ!(ファイッ!ファイッ!×2)?
猪木でもタツナミでもだれでもいいから、教えてクレイ。


67 :デフォルトの名無しさん:03/01/10 11:48
おまえコピペでスレ潰ししたいだけちゃうかと小一時間(略

68 :デフォルトの名無しさん:03/01/10 11:58
>>64
えーっと…それくらいが自分でできるようにならなきゃ
Cやる意味ないよ。

69 :デフォルトの名無しさん:03/01/10 12:42
Winnyをブラウザで見られるようなCGIをだれか作ってよ。
ていうか仕様さえ教えてくれれば作るからさぁ。。

70 :取り合えず:03/01/10 13:58
氏ね犯罪者

71 :デフォルトの名無しさん:03/01/10 14:55
いつものやつでしょ、

72 :デフォルトの名無しさん:03/01/10 16:23

タイプミス
スマソ

73 :デフォルトの名無しさん:03/01/10 16:32

名前(アルファベット)五人分入力
         ↓
     辞書式に並び替える
         ↓
  "meido.doc"ファイルに書き込む
というプログラムを教えてください。
まじ困ってます、お願いします。


74 :デフォルトの名無しさん:03/01/10 17:11
system("sort <con >meido.doc");

75 :デフォルトの名無しさん:03/01/10 17:21
>>74
できればもうちょい詳しく全体を・・
全くの初心者なもんで。

76 :デフォルトの名無しさん:03/01/10 17:24
C++スレだのtemplateスレに書き込むってことはこういうのを期待しているんだと仮定。

int main()
{
  std::multiset<std::string> names;
  const std::multiset<std::string>::size_type max_num = 5;
  std::string buf;
  char c;
  std::cout << "input names." << std::endl;
  while(std::cin.get(c))
  {
    if (c == '\n')
    {
      if (!buf.empty())
      {
        names.insert(buf);
        buf.erase();
        if (names.size() >= max_num)
          break;
      }
    }
    else
      buf += c;
  }
  std::cout << std::endl << "output." << std::endl;
  std::copy(names.begin(), names.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
  return 0;
}

77 :デフォルトの名無しさん:03/01/10 17:33
リダイレクトまで書いてやらんと

78 :デフォルトの名無しさん:03/01/10 17:48
ファイルに吐くなら
std::copy(names.begin(), names.end(), std::ostream_iterator<std::string>(std::ofstream("meido.doc"), "\n"));
だな。

79 :デフォルトの名無しさん:03/01/10 18:57
問題 1234567890123456789の5乗を求めよ。
普通に求めにかかると絶対にオーバーフローしてしまいます。
どうすればいいですか?
よろしくお願いします。

80 :デフォルトの名無しさん:03/01/10 19:08
QBASICの文字列計算をする

81 :デフォルトの名無しさん:03/01/10 19:10
>>79
その問題をだしたヤシを頃す。

82 :デフォルトの名無しさん:03/01/10 19:36
ruby -e 'print 1234567890123456789 ** 5 , "\n"'

83 :デフォルトの名無しさん:03/01/10 19:40
>>79
「多倍長計算」 で Google すれば色々見つかるよ。

84 :デフォルトの名無しさん:03/01/10 19:58
>>82
perlかと思ったらrubyなのね。

85 :デフォルトの名無しさん:03/01/10 21:29
これ解析頼みます
int colorAlloc = 256 * sizeof(RGBQUAD); // size of color tables
int bitsAlloc = infoHeader.biSize + colorAlloc;//+ infoHeader.biSizeImage;
pMapBits = (LPBITMAPINFO)new BYTE[bitsAlloc];
memset(pMapBits,80,bitsAlloc*sizeof(BYTE));
pMapBits->bmiHeader = infoHeader;
LPSTR pColor = ((LPSTR)pMapBits + (WORD)(pMapBits->bmiHeader.biSize));
for (i = 0; i < 256; i++)
((WORD*)pColor)[i] = i;


86 :デフォルトの名無しさん:03/01/10 21:33
>>85
int型のcolorAllocに256にRGBQUADのサイズをかけてを代入
int型のbitsAllocにinfoHeader.biSizeにcolorAllocを足して代入
以下略

87 :デフォルトの名無しさん:03/01/10 21:40
詳しく頼みます・・

88 :デフォルトの名無しさん:03/01/10 21:48
パレット情報付きBITMAPINFOを構築してるんだろ。
memsetと、最後の、((WORD*)pColor)はパレットの格納に
しては妙だけど。

89 :デフォルトの名無しさん:03/01/10 22:33
>>312
この野郎!


と言おうと思ったけどIP晒されるのでやめた

90 :デフォルトの名無しさん:03/01/10 22:42
N速なんか一番腐った板なんだからちょうどいいんでないの。犯罪者予備軍
うようよいるだろうし

91 :デフォルトの名無しさん:03/01/11 00:02
45 :名無しさん@お腹いっぱい。 :02/07/31 16:59 ID:???
よ。
俺はお前を赦さない。
ネットの匿名性を悪用したお前を絶対に赦さない。
たいていのことは金で解決できる。
そう、お前が何処の誰であるかも金さえ積めば分かるのがこの社会のいいところだ。
嘘だと思って笑っていればいい。
俺は人捜しのプロだ。
毎日毎日借金を踏み倒して消えた奴を捜し回ってるんだよ。
ネットの卑怯者を捜したことはないが同じだ。
見つけられないのは金をかけないからだ。
そりゃそうだ。100万しか借金がない奴を100万かけて捜す馬鹿はいない。
今回は、金は問題じゃない。俺はお前を必ず捜し出す。
ホームで1番前には立たないことだ。
階段を降りる時は、まず後ろを見てからにしろ。
これから一生車には乗らない方がいいだろう。
お前やお前の家族に不幸があったら俺を思い出せ。
偶然かもしれないが、俺がやったのかもしれない。
俺はお前が1番大切にしているものを奪ってやる。
子供ができたら気をつけろ。
殺されたくなければ24時間お前の手元に置いた方がいい。
幼稚園にも小学校にも行かせず24時間お前の側に置くべきだ。
川や海に遊びに行くなどもっての外だ。俺がお前の子供を深みに引きずり込んでやる。
娘なら強姦して嬲り殺してやる。
息子なら正視できないような死体にしてお前に届けてやる。
その時は俺を思い出せ。そして自分が犯した愚劣な行為を思い出せ。
その時のお前の顔を拝むのが今から楽しみだ。

92 :超初心者2(1):03/01/11 02:58
#include <stdio.h> #include <conio.h>
#define KEISAN "==============================================\n"
/* 関数のプロトタイプ宣言 */
void data_read(void); void data_disp(void); void the_end(void);
/* グローバル変数の宣言 */
int bango[100], kokugo[100], suugaku[100], jyohou[100]; float heikin[100];
int n, i;
main()
{ int k; do{
/* 初期メニュー画面 */
clrscr(); gotoxy(26,3); printf("********* 成績処理 *********\n");
gotoxy(25,5); printf("データファイルの読み込み・・・・・【1】");
gotoxy(25,7); printf("成績一覧表・・・・・・・・・・・・・・・・・・・【2】");
gotoxy(25,9); printf("終わり・・・・・・・・・・・・・・・・・・・・・・・【3】");
gotoxy(25,11); printf("処理番号を入力して下さい");
gotoxy(50,11); scanf("%d", &k);

93 :超初心者2(2):03/01/11 02:58
/* ユーザ関数の呼び出し */ switch(k){ case 1:data_read(); break;
case 2:data_disp(); break; case 3:data_end() ; break;
default: ; break; } }while(k<4); return(0); }
/* データファイルの読み込み */
void data_read(void) { char f_name[30]; FILE *fp;
int b, k, s, j;
gotoxy(20,7); printf("データファイル名を入力して下さい");
scanf("%s", f_name);
/* データファイルのオープン */
fp=fopen(f_name, "r"); if(fp==NULL){ printf("ファイルがオープンできません\n");
getch(); exit(0); }
/* データの読み込み */
n=1; while((fscanf(fp, "%d%d%d%d", &b, &k, &s, &j)) != EOF){
bango[n]=b; kokugo[n]=k; suugaku[n]=s; jyohou[n]=j; n=n+1; } n=n-1;
gotoxy(20,9); printf("データファイルを読みました。\n");
gotoxy(20,11); printf("どれかのキーを押して下さい。\n");
getch(); fclose(fp); }

94 :超初心者2(3):03/01/11 02:59
/* 成績一覧表の作成 */
void data_disp(void) {
/* 3科目の平均の計算 */
for(i=1; i<=n; i++){ heikin[i]=(kokugo[i]+suugaku[i]+jyohou[i])/3.0; }
gotoxy(5,2); printf("*****成績一覧表*****\n");
printf(KEISAN); printf(" 番号 国語 数学 情報 平均\n");
for(i=1;i<=n;i++){
printf("%5d %5d %5d %5d %6.1f\n", bango[i], kokugo[i], suugaku[i], jyohou[i], heikin[i]);}
printf(KEISAN); getch(); }
/* プログラム終了 */
void the_end(void) { clrscr(); gotoxy(20,9); printf("成績処理の作業を終わります。\n");
gotoxy(20,11); printf("今後に期待します。"); getch(); exit(0); }

95 :超初心者2(4):03/01/11 03:01
実行すると、
gotoxy(25,7); printf("・・・覧 \
^
8-3.c(25) : Lexical error: undefined escape sequence
printf("*****・・・覧 \*****\n");
^
8-3.c(80) : Lexical error: undefined escape sequence
--- errorlevel 1
というエラーが発生して、実行できません。
どうしても原因がわかりません。よろしくお願いします。

96 :デフォルトの名無しさん:03/01/11 03:42
マジレスだが、運子は塩辛かったぞ。

97 :デフォルトの名無しさん:03/01/11 04:02
>>95
昔、gccだかでSJISを通そうとしたら
似たような現象が起きた。

多分、日本語を正式にサポートしてないコンパイラを
使っているせいだと思う。

98 :超初心者2:03/01/11 04:11
>>97
アドバイスありがとうございます。
この部分を修正したら、コンパイルはできましたが、
gotoxyとclrscrが未定義というエラーがでました。
#include<conio.h>を定義してもなぜか認識されません。
コンパイラの問題でしょうか?

99 :デフォルトの名無しさん:03/01/11 04:16
まず、OSとコンパイラを報告しろ。
さらに、そのプログラムはどこから拾ってきた?

100 :超初心者2:03/01/11 04:23
>>99
OSはWINDOUS98
コンパイラはDIGITAL MARS
このプログラムは教科書の問題で学生番号と国語、数学、情報の3科目の
成績のデータファイル(ファイル名seiseki.dat)を作成しなさい。
という問題です。>>92の下から3から5行目のようなメニュー形式にすることが
条件です。

101 :デフォルトの名無しさん:03/01/11 04:29
WINDOUS98 WINDOUS98だって。ゲラゲラ
WINDOUS98    WINDOUS98
     ゲラゲラ    ゲラゲラ

ゲラゲラゲラゲラ


102 :デフォルトの名無しさん:03/01/11 09:19
【社会】2ちゃんねるが全板でIP記録を開始 3年に渡る"匿名掲示板"の歴史に幕…
http://news2.2ch.net/test/read.cgi/newsplus/1042202364/

103 :デフォルトの名無しさん:03/01/11 09:19
ボンタレンに改名汁!!!!

104 :デフォルトの名無しさん:03/01/11 09:56
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

105 :Cがさっぱり:03/01/11 10:03
Cで困ってる事があります。
碁盤目上のマス目を作ってそこに数値を入れるにはどうしたらいいんでしょうか?
よろしくお願いします。

106 :デフォルトの名無しさん:03/01/11 10:22
2次元配列に入れたら?

107 :Cがさっぱり:03/01/11 10:31
2次元配列を升目にするやり方がわかりません...


108 :デフォルトの名無しさん:03/01/11 10:33
二次元配列は升目なんです

109 :デフォルトの名無しさん:03/01/11 10:36
>>107
コンソールアプリなら罫線使って作れよ
─┌┐┘└├┬┤┴┼

110 :Cがさっぱり:03/01/11 10:41
それしか方法ないですよね...
わかりました。
すぐに答えてもらってありがとうございました!

111 :デフォルトの名無しさん:03/01/11 10:46
2

112 :デフォルトの名無しさん:03/01/11 11:15
早いねぇ・・・。

113 :デフォルトの名無しさん:03/01/11 12:17
249 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
   >荒らしとか犯罪のためなの?
   そす。

246 名前:心得をよく読みましょう[] 投稿日:03/01/08 17:52 ID:BH998yxV
   >ひろゆき
   俺のお気に入りのスレとか荒されてるんだがそういうのにも有効?

257 名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:53 ID:rLfxQ17l
      いずれは。


 

114 :デフォルトの名無しさん:03/01/11 12:51
┨←なんでこれ付けないの?→┠

115 :デフォルトの名無しさん:03/01/11 13:25
stdoutってなんだぁ?

116 :デフォルトの名無しさん:03/01/11 14:35
標準出力

117 :デフォルトの名無しさん:03/01/11 15:36
説→切 (;´Д`)

118 :デフォルトの名無しさん:03/01/11 23:45
だいぶ前にあった、2chのシステムを利用したオークションサイトができるという話はどうなったの?

119 :デフォルトの名無しさん:03/01/11 23:56
http://www.maido3click.com/2ch/ranking.html

120 :デフォルトの名無しさん:03/01/12 02:33
お前らのIPって儲かるんだよな

121 :デフォルトの名無しさん:03/01/12 10:07
ああ 生活板のババァですか?
ごくろうさまです。

122 :デフォルトの名無しさん:03/01/12 10:10
夫やパートナーが、妻や恋人に対して
ふるう暴力〈ドメスティックバイオレンス―DV〉は、
家庭内で起こる暴力のため、なかなか表面化することはありません。
しかし、社会的、経済的、肉体的に優位に立つ男性が、
弱い立場にある女性をさまざまな暴力で支配しようとする行為は、
「夫婦げんか」などの個人的事情、個別的問題の範囲を越え、
女性の人権を侵害する明らかな犯罪です。

http://www.awf.or.jp/boutai/a_01.html


123 :デフォルトの名無しさん:03/01/12 14:09
( ´∀`)女が男を言葉で貶すのは良いのですか…

124 :デフォルトの名無しさん:03/01/12 15:40
ポインタの勉強をしていて,&a[i][j]とa+i+jが
違う場所を指すのは何故ですか?

#include <stdio.h>
int main( void ){
int a[2][3],i,j;
for( i = 0 ; i < 2 ; i++ ){
for( j = 0 ; j < 3 ; j++ ){
printf("%p %p\n",&a[i][j],a+i+j);
}
}
return 0;
}
--結果
0xbfbff8ac 0xbfbff8ac
0xbfbff8b0 0xbfbff8b8
0xbfbff8b4 0xbfbff8c4
0xbfbff8b8 0xbfbff8b8
0xbfbff8bc 0xbfbff8c4
0xbfbff8c0 0xbfbff8d0


125 :デフォルトの名無しさん:03/01/12 15:49
>>124
a+i*3+jとなら同じにならない?

126 :デフォルトの名無しさん:03/01/12 16:26
>>124
コンパイラが"a"という配列名をint3つ分と解釈しているためだと思う。
だから、"a+1"とかすると(intのサイズ)×3×1のアドレスを指す。

127 :デフォルトの名無しさん:03/01/12 16:27
>>124
jが1増加すると&a[i][j]は4、a+i+jは12増加している。
ではiは?

128 :デフォルトの名無しさん:03/01/12 16:36
コンパイルしようとしたら
can't open: Stdio.h: No such file or directoryってエラーが出ました。
環境設定が間違ってるのかな?こんな初心者にどうか愛の手を(m_ _m)


129 :C++厨:03/01/12 16:39
>>124
aの型がint [2][3](int (*)[3])の為。

130 :C言語:03/01/12 18:06
>>128
もう解決済みだと思うが、大文字と小文字を区別しないとダメだと思う。
同じくド素人からの考え。

× #include <Stdio.h>
○ #include <stdio.h>

131 :デフォルトの名無しさん:03/01/12 18:07
>>128
stdio.h は全部小文字。

132 :デフォルトの名無しさん:03/01/12 18:21
wchar_t str[4];に
"空"とだけ書いたファイルから
fwscanf(fp, L"%s", str);
で読み込ませると
printf("%x%x", str[0], str[1]) で 8bf3 となって 
str[0]に2バイト文字として読み込んでくれないのですが
どうしてなんでしょうか("空"のSJISコードは8bf3)

wcscpy(str, L"空");とすると
printf("%x", str[0]);が 7a7a
wcscpy(str, "空");とすると
printf("%x", str[0]);が f38b
となります

やりたいことは
fwscanf(fp, L"%s", str);
if( wcscmp(str, L"空") == 0 ){・・・}
といった感じのことをやりたいのですが
どうしても上に書いた様になって
条件文が成立してくれません

133 :132:03/01/12 18:55
テキストモードで開いていたファイルを
バイナリモードで開いたら
fwscanf(fp, L"%s", str);
if( wcscmp(str, "空") == 0 ){・・・}
がいけるようになりました

あと wcscpy(str, L"空") としても wcscpy(str, "空")
としても
wprintf(L"%s", str);
で"空"と表示されないのはどうしてでしょうか

134 :デフォルトの名無しさん:03/01/12 20:23
C言語とは関係ないけど、このページに書いてあること見たら
思わず笑ってしまった。C言語を考えすぎて疲れた時に、
ちょっと頭を冷やす意味で見てみて。
ttp://www.imasy.or.jp/~yotti/lang_c/c_quiz.html

135 :デフォルトの名無しさん:03/01/12 20:33
何を今更・・・

136 :デフォルトの名無しさん:03/01/12 20:36
642 が核心を突いてるぞ!

(トリップ便乗!)

137 :デフォルトの名無しさん:03/01/12 20:45
そうそう

sports3 サーバ html 化はいります。



138 :デフォルトの名無しさん:03/01/12 23:53
asdfg と入力してアルファベット順に出力したいんですが
どうソートすればいいんですか

139 :デフォルトの名無しさん:03/01/12 23:56
遣り方は幾つかあると思うが

140 :デフォルトの名無しさん:03/01/13 00:26
>>124
>a+i+j
a[1][0],a[0][1]
をどう区別するつもりだ?


141 :138:03/01/13 00:32
forを使うんですか?

142 :41続き:03/01/13 00:43
>133
>wprintf(L"%s", str);
>で"空"と表示されないのはどうしてでしょうか
%s (小文字)が原因。ワイド文字は、%S (大文字)。

IP記録実験がはじまってから、変な顔文字が各板に貼られているのを見かけるのですが、
あれはなんの意味があるのでしょうか?
※)スレ違いなこと書いてスマソっす。


143 :142:03/01/13 00:47
名前欄がどっかのスレに書込んだ時のままだった。鬱だ。。。
このスレの41とは関係ないっす。


144 :デフォルトの名無しさん:03/01/13 01:08
文字列の先頭アドレスを受け取り,関数内で文字列内の文字を昇順にするのはどうすりゃいいですか?

145 :PGバイト人(学生):03/01/13 01:21
>>144

a[?] = "beadc";
sort(a);
cout << a << endl;

結果:
abcde

て事かい?

146 :デフォルトの名無しさん:03/01/13 01:32
宿題できなくて困ってるんですけどもしよければどなたかアドバイスしてもらえませんか??
(実行結果)
行を入力して下さい:My name is Yukari.
単語:My 単語:name 単語:is 単語:Yukari
行を入力して下さい:空行
総行数=1 総単語数=4

というふうなプログラムなんです。
とりあえず自分で思いつく限り参考書とかみて下のように
途中まで作ってみてものの何だかよくわからない形に…
単語がみつからなくなるまで呼び出しておいて表示させる方法と
その時見つからない場合と見つかった場合のif文での分岐の仕方です。
初心者なのでみづらいかも、ごめんなさい


147 :146:03/01/13 01:32
include<stdio.h>
#include<string.h>
#include<ctype.h>

int wc(char **,char []);
void main(){
char tango[250];
char line[50];
char *p,*sp
int tango;
int line;
int sumtango=0;
int sumline=0;

printf("英文を入力しなさい。");
while(*(sp=gets(line))){
  if(){
     word=wc(sp)
    printf("単語:%s",tango);
    sumword+=word;
    sumline++;
    }
 printf("英文を入力しなさい。");
}
printf("総行数:%d\n総単語数:%d",sumline,sumword);
}
int wc(char **start,char *tango){
if() return(0);
else return(1);

148 :PGバイト人(学生):03/01/13 01:35
>>146
C言語すか? C++すか?


149 :デフォルトの名無しさん:03/01/13 01:42
/* 1から15までの奇数の積を計算してプリントするプログラムを書け */

#include <stdio.h>

main()
{
int i, seki;
seki = i = 1;


while (i <= 15){
seki = seki * i;
printf("%d\n", seki); /* とりあえず */
i += 2;
}

return 0;
}

表題のとおりなんですが、参考書を手引きに問題を解いております。
自分で書いておいて、sekiという変数に1を初期値として代入するというところに
納得がいっておりません。
なにか、うまい書き方はないものでしょうか?
問題だと、1*3*5*・・・とならなければXだと思うのですが
今のままだと1*1*3*5*・・・になってしまいます

150 :PGバイト人(学生):03/01/13 01:43
>>146
とりあえず・・書き直した方がよい


151 :デフォルトの名無しさん:03/01/13 01:46
for(i=1;i<16;i+=2){printf("%d * ",i);seki*=i;}

152 :146:03/01/13 02:11
>>148
ごめんなさい遅くなって。Cです。
書き直しって何をどうすべきでしょうか?


153 :PGバイト人(学生):03/01/13 02:18
>>146
宿題に当たってのヒント

流れは(多分)こんな感じになる
■関数main
・変数などの宣言
・構文の入力
 ◇while(構文は空行でない)
 //ここからの処理は様々だけど僕はこうした
  ・取得した構文の全ての空白位置をint型配列に格納 //単語の判定に便利
  ・空白行でない文字の塊を1単語とする // 一文字でもOK
  ・単語を2次元配列に格納していく // コピーの際終端文字を忘れずに
  ・色々表示
  ・構文取得
 ◇
main関数終了

154 :デフォルトの名無しさん:03/01/13 02:19
>>149
i = 1;
seki = i;
i += 2;
while (i <= 15) {
seki += i;
i += 2;
}
とでも書いたら。
まぁ別にそのままでもいいと思うが。

155 :PGバイト人(学生):03/01/13 02:21
>>146
ポインタで文字を扱う良問だと思う。
頑張って”もの”にしてくれ。

156 :PGバイト人(学生):03/01/13 02:26
>>146
あと
・構文取得はscanf関数を使いなされ(C++だったらcin)
・変数の2重定義は反則
・セミコロンは忘れずに

基本です。

157 :デフォルトの名無しさん:03/01/13 03:09
>>146

#include <stdio.h>
#include <string.h>

int main(void)
{
char buf[128], *p;
int wc = 0, lc = 0;

while (1) {
printf("行を入力して下さい:");
gets(buf);
if (buf[0] == '\0') break;
lc++;
p = strtok(buf, " .,");
if (p == NULL) continue;
printf("単語:%s ", p);
wc++;
while (p = strtok(NULL, " .,")) {
printf("単語:%s ", p);
wc++;
}
putchar('\n');
}
printf("総行数=%d 総単語数=%d\n", lc, wc);

return 0;
}

158 :デフォルトの名無しさん:03/01/13 04:00
>>151 >>154
サンクスです!
これをもとにさせていただきます

159 :デフォルトの名無しさん:03/01/13 10:58
#include <windows.h>#include <cstdio>
#define DATA_AXIS_NUM 2048
int main(){int x,y,z,t; BYTE **pData;
 pData=(BYTE**)new BYTE *[DATA_AXIS_NUM];
 for(y=0;y<DATA_AXIS_NUM;y++) pData[y]=(BYTE*)new BYTE[DATA_AXIS_NUM];

 for(z=y=0;y<DATA_AXIS_NUM;y++)
  {
   for(x=0;x<DATA_AXIS_NUM;x++)
   {
    if(z==0&&z!=x%256)
     t=0;
    if(223<z&&z<230)
     t=0;
    pData[y][x]=(BYTE)z++;
   }
  z=0;
 }

 for(y=0;y<DATA_AXIS_NUM;y++) delete[] pData[y];
 delete[] pData;
 return 0;
}
(BYTE)z++でz=223辺りからz=255位まで0を返してきますが、メモリ破壊してる?
tは条件ブレークポイントの為にあります
環境:VC++.NET&WinXP


160 :デフォルトの名無しさん:03/01/13 12:01
文字列と文字を入力させいくつ入力した文字が文字列とあってるか
カウントしたいんですが教えてください

161 :653:03/01/13 12:07
ソートは比較しながらforや一時保管領域を使うのしかわからんのですが
これではできませんかね?

162 :デフォルトの名無しさん:03/01/13 16:27
???

163 :161:03/01/13 16:45
基本選択法を用いて文字型配列の先頭アドレスを受け取り、文字列内の文字を
昇順にソートする関数を作れ。表示処理はmain()でというんですが教えてください。
自作関数でソートするのがわからんのです。

164 :デフォルトの名無しさん:03/01/13 17:32
>>163

#include <stdio.h>
#include <string.h>

void sort(char ptr[])
{
int i, j, len = strlen(ptr);
char tmp;

for (i = 0; i < len - 1; i++)
for (j = i + 1; j < len; j++)
if (ptr[i] > ptr[j]) {
tmp = ptr[i]; ptr[i] = ptr[j]; ptr[j] = tmp;
}
}

int main(void)
{
char buf[512];

gets(buf);
sort(buf);
puts(buf);

return 0;
}

165 :デフォルトの名無しさん:03/01/13 18:03
畜生。>>163はマルチだった。答えるんじゃなかった。
マルチ氏ね。

166 :山崎渉:03/01/13 18:25
(^^)

167 :デフォルトの名無しさん:03/01/13 22:05
文字列と文字を入力させいくつ入力した文字が文字列とあってるか
カウントし出力したいんですが教えてください


168 :デフォルトの名無しさん:03/01/13 22:07
>>167
入力例と出力例を書け。

169 :デフォルトの名無しさん:03/01/13 22:08
そんなに世の中が嫌いか。
年収600万円に満たない屑でも愉快に暮らせる楽しい世の中じゃないか。
いちいち爆破するな。

170 :146:03/01/13 22:51
お返事頂いて昨日はありがとうございました。
まだ途中なんですけどだんだんわかってきて
このぶんだと期日にはなんとか間に合いそうです。

>>PGバイト(学生)さん
 ありがとうございます。ヒント頂いたおかげで
 少しずつプログラムっぽくなってきました。
 まだ一部わからないのでもうちょっと頑張ってみます。
 
>>157さん
模範解答ありがとうございます!
「strtok」使ってやりたかったんですけど
習ってなかったしよくわからなかったんです。
でもこうやればうまく動かせるのですね〜。ほんとに勉強になります。
でもそのまま宿題で出しちゃうわけにもいかないし
参考にさせて頂きます。ほんとにありがとうございました

171 :デフォルトの名無しさん:03/01/13 23:56
なら、
if(buf[i]==' '||buf[i]==','||buf[i]=='.')
[切り分け作業]
などとしたら?
これでも出来るんじゃない?
strtokのかわりにね。

172 :デフォルトの名無しさん:03/01/14 13:40
度々すみません
名前(アルファベット)五人分入力
         ↓
     辞書式に並び替える
         ↓
  "meido.doc"ファイルに書き込む
というプログラムなんですが、先日レスしていただいた物より
もっと初心者向けのものはないでしょうか?
お願いします。


173 :デフォルトの名無しさん:03/01/14 13:47
sort < con > meido.doc

174 :デフォルトの名無しさん:03/01/14 13:50
>>173さん
ありがとうございます。
できれば全体をおねがいします。



175 :b:03/01/14 14:13
h

176 :中森:03/01/14 14:15
すいません c++なんですが、思い通りに動かないのですが、どこがおかしいかおしえてもらえないでしょうか?
ここに貼っていいですか?レベルは入門者レベルです

177 :中森:03/01/14 14:26
あのー貼っていいですか 一応貼らせて頂きます 
でもながいので二つにわけます

178 :中森:03/01/14 14:27
#include <iostream.h>
main()
{
int goukei, hikazei, kazei, syouhizei, k, sv,tv,uriage, s1, s2,m, n, num, nenrei, bunrui1, bunrui2,seibetu,kubetu1,kubetu2,kubetu3, a, b, c ;
goukei = 0;
hikazei = 0;
kazei = 0;
syouhizei = 0;
k = 0;
uriage = 0;
a = 0;
b = 0;
c = 0;
kubetu1 = 0;
kubetu2 = 0;
kubetu3 = 0;
bunrui1 = 0;
bunrui2 = 0;
s1 = 0;
s2 = 0;

179 :中森:03/01/14 14:28
cout << "レジプログラムスタート"<<endl;
cout << " 買物客情報: "<< endl;
while( cin >> tv >> sv)
{
while( cin >> m >> n)
{

num = goukei;
if ( 50 > m )
hikazei = hikazei + n;
else if ( 99 == m)
goukei = num;
else
{
kazei = kazei + n;
syouhizei = syouhizei + n * 0.05;
}
}


180 :中森:03/01/14 14:29
goukei = kazei + hikazei + syouhizei;
cout << " 課税合計額 " << kazei << endl;
cout << " 消費税 " << syouhizei << endl;
cout << " 非課税合計額 " << hikazei << endl;
cout << " 請求額 " << goukei << endl;

uriage = uriage + goukei - syouhizei;


if ( 1 == nenrei )
{
kubetu1 = kubetu1 + goukei;
a = a + 1;
}
else if (2 == nenrei )
{
kubetu2 = kubetu2 + goukei;
b = b + 1;
}
else
{
kubetu3 = kubetu3 + goukei;
c = c + 1;

}

181 ::03/01/14 14:44
if ( 1 == seibetu)
{
bunrui1 = bunrui1 + goukei;
s1 = s1 +1;
}
else
{
bunrui2 = bunrui2 + goukei;
s2 = s2 + 1;
}






k = k + 1;
cout << " 買物客情報: "<< endl;



}


182 :中森:03/01/14 14:45
cout << " 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 " << endl;
cout << " 本日の実績: " << endl;
cout << "  来客数: " << k << " 名 " << endl;
cout << "  総売上額 " << uriage << " 円 "<< endl;
cout << "  -------------------------------------------- " << endl;
cout << "  年齢層別 " << endl;
cout << "   青少年" << a << " 名 " << kubetu1 << " 円 " << kubetu1 / static_cast<float>(uriage) *100<< " % " << endl;
cout << "   壮年" << b << " 名 " << kubetu2 << " 円 " << kubetu2 / static_cast<float>(uriage) *100<< " % " << endl;
cout << "   高齢者" << c << " 名 " << kubetu3 << " 円 " << kubetu3 /static_cast<float>(uriage)*100 << " % " << endl;
cout << "  -------------------------------------------- " << endl;
cout << "  男女別 " << endl;
cout << "   1.男 " << s1 << " 名 " << bunrui1 << " 円 " << bunrui1 / (float)goukei *100<< " % " << endl; //
cout << "   2.女" << s2 << " 名 " << bunrui2 << " 円 " << bunrui2 / static_cast<float>(uriage)*100 << " % " << endl;
cout << "  -------------------------------------------- " << endl;
cout << "レジプログラム終了"<<endl;
return 0;
}


183 :中森:03/01/14 14:48
おねがいします

184 :デフォルトの名無しさん:03/01/14 15:10
あのさ、まともに聞きたいならどういう風に動作させたいとか
どういうエラーが出るとかエラーが出ないならどうなって終了してしまうとか
そういったことを書かないとなかなか答えてもらえないよ。

185 :デフォルトの名無しさん:03/01/14 15:17
次スレから 1 にこれ追加きぼん。
http://www.hyuki.com/writing/techask.html
http://www.geocities.co.jp/SiliconValley/5656/

186 :デフォルトの名無しさん:03/01/14 16:07
返事も何もないところを見ると釣られたのかな…

187 :デフォルトの名無しさん:03/01/14 16:14
度々すみません
名前(アルファベット)五人分入力
         ↓
     辞書式に並び替える
         ↓
  "meido.doc"ファイルに書き込む
というプログラムなんですが、先日レスしていただいた物より
もっと初心者向けのものはないでしょうか?
お願いします。


188 :デフォルトの名無しさん:03/01/14 16:28
丸投げにはそれなりの返答しかされません。
あしからず。

189 :デフォルトの名無しさん:03/01/14 16:33
>>187
標準関数qsort



190 :デフォルトの名無しさん:03/01/14 16:56
2つの三次元ベクトルの数値をそれぞれ入力し、その内積を求め表示するプログラムをお願いしますm(_ _)m

191 :中森:03/01/14 17:04
すみません 一番最初のwhileが二回目から勝手に1がcinされてしまって 繰り返しが行われません。
誰も見てくれてないのかと思いちょっと席をはずしておりました、すいませんでした

192 :!住人:03/01/14 17:27
>>187 C++で良い?


193 :soho:03/01/14 17:54
>>190 #include <stdio.h>
main() {
double ip,a1,a2,a3,b1,b2,b3;/*結果と各成分*/
printf("vect1=: ");
scanf("%f,%f,%f",&a1,&a2,&a3);/*各成分は実数、カンマ区切りとして*/
printf("vect2=: ");
scanf("%f,%f,%f",&b1,&b2,&b3);
ip=a1*b1+a2*b2+a3*b3;/*内積の定義どおり*/
printf("Inner Product= &f9.2\r\n",&ip);
}


194 :C++厨:03/01/14 17:57
ちょっと今からリナちゃんをインスコするので出られませんが
おながいします

195 :!住人:03/01/14 19:50
>>187

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>

int main()
{
std::vector< std::string > str_list;
for( int i=0; i<5; i++ )
{
std::string tmp;
std::cin >> tmp;
str_list.push_back( tmp );
}
std::sort( str_list.begin(), str_list.end() );
std::ofstream fout("sage.doc");
for( int i=0; i<5; i++ )
{
fout << str_list[i] << '\n';
}
return 0;
}


196 :デフォルトの名無しさん:03/01/14 20:44
>>195
「辞書順」で並べ替えて欲しいとかいてあるから、std::lexicographical_compare
を比較叙述関数に与えた方がいいのでは?

197 :デフォルトの名無しさん:03/01/14 23:28
聞く時は最後に上げるのも礼儀だぞ

198 :デフォルトの名無しさん:03/01/15 00:56
Cを始めたばっかりの超初心者です。宿題の一番最初でつまずいてます。。
scanf(), fscanf(),sscanf()は使用不可。gets(),fgets(),atoi()は使ってよし。
これで1行の間に任意で入力された数字(最大60桁、各数字間はスペースで区切る)
を配列に格納して、数字以外のものがあれば入力しなおさせる。
というものなんですが、そもそもcharの扱いがよく分かりません。
本当に初心者で申し訳ないのですが、ヒントがいただければ嬉しいです。
よろしくお願いします。



199 :デフォルトの名無しさん:03/01/15 01:41
>>198
仕様が不明確。
その宿題は、本当にそう書いてあるのか?

200 :198:03/01/15 02:15
>>199 さん
これは宿題のほんの一部分なんですが、厳密にはこのように書いてあります。
「整数はスペースで区切られ、どんな数字でも良い。
 ただし、入力行は最大60文字までとする。
 もし入力された行に整数以外のものがあれば全ての値を捨て、新たな入力をさせる」
「string.hのファンクション、及びscanf(),fscanf(),sscanf()は使用禁止」
「gets(),fgets()は使っても良い。必要ならatoi()を使え」
不明瞭ならすみません。でもこれ以上は書いてないんです。

201 :デフォルトの名無しさん:03/01/15 02:20
>>200
何処にも入力された数字を保存しろと書かれてないと言ってみる

202 :C++厨:03/01/15 03:11
( ̄ー ̄)

203 :デフォルトの名無しさん:03/01/15 04:34
>>200
一応char配列の取り扱いの演習だと思って書いた。
入力の区切りはspace以外にtabでもよいようにisspace()で判定する。
(入力の束はtabで縦に揃えてあることが多いから)
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
main() {
int numbers[32];/*1文字おきにspaceのとき30個のint*/
char line[62];/*入力行を得るワーク*/
int n,ix;
while(1) {
if(fgets(line,sizeof line,stdin)==NULL) break;
/*lineには例えば123 -4567 12345...のような文字、最後は0が入る*/
/*strlen(line)でlineの文字数が判るがstr系は使ってはいけないので*/
errfg = 0;
n=0;
while(line[n]) {/*先に不正文字があるかcheck*/
if( !isspace(line[n]) ||
!isdigit(line[n]) ||
line[n]!='-' )
errfg = 1;
n++;
}

204 :デフォルトの名無しさん:03/01/15 04:34
if( errfg ) {
printf("数値エラー行:%s",line);
}
else {/*整数値と' 'だけのときatoiで変換*/
n=0; ix=0;
while(line[n] ) {
numbers[ix++]=atoi(line+n);
while( !isspace(line[n]) ) {
n++;
}
while( isspace(line[n]) ) {
n++;
}
/* このwhile↑が無いと行末にspaceがある時1個余分に数値0が変換される*/
}
for(n=0;n<ix;n++) { /*抽出した数値を表示*/
printf("%6d\r\n",numbers[ix]);
}
}
}/* endwhile*/
/* 空行入力、またはリダイレクト入力ファイルの終わりで終了*/
exit(0);
}/* endfunc main*/


205 :デフォルトの名無しさん:03/01/15 04:43
>>200
質問の「ほんの一部分」では答えようが無いのでは

例えば「入力ファイルを整形しなさい」と言われただけでは
どう整形していいかわからないと思います
質問の前に、要点を把握して何をすべきか考える必要があるかと

206 :デフォルトの名無しさん:03/01/15 07:51
>>200
入力された行に数字かスペース以外が含まれていたら、
もう一度入力させるだけじゃないの?

207 :203,204:03/01/15 08:35
'-'も含まれるはずだよね。その辺は問題の表現から推察するのがプロ
のやることです。atoiを使えとのことからint範囲でよかろう、
scan系使うなとの表現からchar配列操作の演習であろう、と判断。
それでよかった?>198さん。

208 :デフォルトの名無しさん:03/01/15 09:14
その程度のコードでプロだとかアマだとか言うなよ
恥ずかしいから

209 :198・200:03/01/15 11:59
おそくなって申し訳ありません。
皆さん、どうもありがとうございます。
>>203,204
ありがとうございます!詳しく書いていただいてめちゃめちゃ感謝です!!
これからじっくり勉強させていただきます。
>>205
これは後で入力された数字を使った演習が続きます。(比較したり、素数を出したり)
それ以外の部分は本当に関係なくて。。
そこは何とかなるので、書きませんでした。足りなかったですね。すみません。
>>206,207
その通りです。
本当に初心者なのでこれから頑張って勉強します。
ありがとうございました。

210 :.:03/01/15 12:05
>>200
こんなのどうだ?

#include <stdio.h>
int buf_chk(char *buf)
{
int spc=1;

while(*buf){
switch(*buf){// 数字か空白なら受理
case '0':case '1':case '2':case '3':case '4':
case '5':case '6':case '7':case '8':case '9':spc=0;break;
case ' ':case '\t':case '\n':spc=1;break;
default:
// 手前に空白がある場合符号も受理
if(spc)if(*buf=='+' || *buf=='-')break;
return 1;
}
buf++;
}
return 0;
}
int main()
{
char buf[60+1+1];

do{
fgets(buf,sizeof(buf),stdin);// 入力
}while(buf_chk(buf));// チェック
return 0;
}


211 :.:03/01/15 12:08
数値も扱うならだめか…
あと
if(spc&&(*buf=='+' || *buf=='-'))break;
だな…

212 :デフォルトの名無しさん:03/01/15 12:58
使用禁止か?
isdigit
isspace

213 :デフォルトの名無しさん:03/01/15 16:17
初心者なのですが
C言語で1から10までの数値を2進数で表示したいのですが
どうすればいいのでしょうか。
教えてくださいお願いします。

214 :デフォルトの名無しさん:03/01/15 16:19
>>213
Windowsならitoa()でも使え。

215 :213:03/01/15 16:24
itoa()ってなんでしょうか
詳しく教えてください。

216 :デフォルトの名無しさん:03/01/15 16:24
浮動小数点でか?
うーん困った...
ループどうやって回そう

217 :デフォルトの名無しさん:03/01/15 16:28
>>213
printf("1=1b,2=10b,3=11b,4=100b,5=101b,6=110b,7=111b,8=1000b,9=1001b,10=1010b\n");

218 :デフォルトの名無しさん:03/01/15 16:28
>>215
それくらい自分で調べろボケ

219 :デフォルトの名無しさん:03/01/15 16:35
>>213
Windowsでしか動かんぞ。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int i;
char str[50];

for (i = 1; i <= 10; i++) {
itoa(i, str, 2);
puts(str);
}

return 0;
}

220 :山崎渉:03/01/15 17:44
(^^)

221 :デフォルトの名無しさん:03/01/15 18:14
>>213
unsigned c,r,t,f;main(){while(c<10){r=f=0;for(t=++c;t;t>>=1)r=r<<1|t&1,f++;while(--f) putchar(060|r&1),r>>=1;putchar(' ');}}
1箇所だけわざとバグってるから,直して使え

222 :221:03/01/15 18:22

直し方わかってもここで言うなよ

223 :デフォルトの名無しさん:03/01/16 00:57
>>213
>C言語で1から10までの数値を2進数で表示したいのですが
なつかしーっす。自分もC言語を始めて1、2週間辺りで組んだ経験があるので。
んで、早速、昔作ったライブラリから引っ張ってきてみたっす。
#include <stdio.h>

char *bitpot( char *, int, int );

int main( void )
{
    char box[60];
    int i;
    for( i=1; i < 11; i++ )
        fprintf( stderr, "%2d :: [%s]\n", i, bitpot( box, i, 16 ) );
    return (0);
}

char *bitpot( char *pot, int c, int bit )
{
    int i=0;
    if( bit != 16 && bit != 32 )
        return (NULL);
    for( --bit; bit >= 0; bit-- )
        sprintf( &pot[i++], "%1d", ( c >> bit ) & 0x01 );
    return (pot);
}
>どうすればいいのでしょうか。
ビットをずらし、マスクをかける程度でいいと思います。
あと、>>221のようにビット論理和(?でいいんだったけ)を用いる手もあります。

224 :デフォルトの名無しさん:03/01/16 04:54
#include <stdio.h>
void main(void)
{
int num=1;
printf("***This line has %d bug.***, num);
}

これってどこが間違ってますか?

225 :デフォルトの名無しさん:03/01/16 04:56
> void main(void)

ここが間違っている。

226 :デフォルトの名無しさん:03/01/16 05:01
あ、int main ですか? >>225さん

227 :デフォルトの名無しさん:03/01/16 05:23
>>224
printf("***This line has %d bug.***, num); をprintf("***This line has %d bug.***", num); に

こんなもんエラーメッセージから判断できそうなものだけど

228 :デフォルトの名無しさん:03/01/16 05:25
ボタンを押した時に描画した画が、
フォームを最小化したり、他のウインドウが重なったりした時
消えてしまうのが嫌なんで
CMy00000Viewクラスへ「WM_PAINT」のWindowsメッセージハンドラの追加はしました
確かにできたんですが、まだ
大きなプログラムだと処理が遅く、ウィンドウを大きくしたら消える、少し動かさないと絵がでてこない
という問題がありました・・
それはどうすればよろしいでしょうか?


229 :228:03/01/16 05:26
ダイアログのピクチャーボックスの絵です
SDIです

230 :デフォルトの名無しさん:03/01/16 06:23
up_dateリージョンの取り方がよろしくないすね。

InvalRgn(RgnHandle)でup_dateしてください。

231 :228:03/01/16 07:23
InvalRgn(RgnHandle)ってどうやって使うのですか?

232 :デフォルトの名無しさん:03/01/16 07:43
つーか InvalRgn() って何?

233 :迷宮人:03/01/16 09:55
7×7マスの迷路を解くプログラムを作りたいのですが、教えてください。
外側は全て壁で囲まれていて、迷路の縦方向をi、横方向をjとして、自分の位置を(i,j)で表します。
それから、右、下、左、上の順に進める方向を探す、というものです。

234 :デフォルトの名無しさん:03/01/16 10:33
>>233
再帰



235 :デフォルトの名無しさん:03/01/16 12:11
迷路のデータ構造を示してくれ

236 :とけますか?:03/01/16 13:49
下記のコードで、標準出力に Giko の所持金が正しく表示されるように、
クラス Human を修正せよ。
クラス Giko および main() 内部を変更してはいけない。

#include <iostream>

class Human {
public:
int getMoney() { return 10000; }
};

class Giko : public Human {
public:
int getMoney() { return 10; }
};

int main() {
Human* usual = new Human();
Human* giko = new Giko();

cout << " usual : " << usual->getMoney() << endl;
cout << " giko : " << giko->getMoney() << endl;

delete usual;
delete giko;

return 0;
}


237 :デフォルトの名無しさん:03/01/16 13:55
仮想関数でないというひっかけか?

238 :デフォルトの名無しさん:03/01/16 13:59
>>233
    ,-ー─‐‐-、
   ,! ||     |
   !‐-------‐
  .|:::i ./ ̄ ̄ヽi
  ,|:::i |' (,,゚Д゚)||  < ソース出せ。ゴルァ!!
  |::::(ノ 中濃 ||)
  |::::i | ソース ||
  \i `-----'/
     ̄U"U ̄


239 :デフォルトの名無しさん:03/01/16 14:00
"Giko is a Human."
とは、あなたも大胆な主張をなさる、、、

240 :236:03/01/16 14:01
>>237
あ、もう正解わかっちゃってますね、多分。
基本なのにわからなかったんです・・・ショック。

241 :236:03/01/16 14:02
>>237
じゃあ、解説をおながいします。

242 :デフォルトの名無しさん:03/01/16 14:03
#include <iostream.h>
もしくは
#include <iostream>
using namespace std;

とする。

243 :デフォルトの名無しさん:03/01/16 14:05
仮想デストラクタも忘れずに。

244 :デフォルトの名無しさん:03/01/16 14:25
>>236
virtual int getMoney()

245 :236:03/01/16 14:41
>>244 正解 Humanクラスのほうにvirtualを付ける。

246 :C++厨:03/01/16 14:58
謝罪
俺は低レベルでしたm(_ _)mごめんなさい

247 :デフォルトの名無しさん:03/01/16 16:39
プログラムを入力しそれを16進数で表示するプログラムを
作りたいのですがどうすればいいでしょうか。
こんな感じです。

00000 :23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E #include <stdio.
00010 :68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 63 74 h>..#include <ct


248 :デフォルトの名無しさん:03/01/16 16:45
少なからず自分で組んでみてわからないところを聞いたほうがいいと思うよ。

249 :デフォルトの名無しさん:03/01/16 16:53
GIFアニメのフレーム数を取得したいのですが
どこを数えればいいんでしょうか?
フレーム数だけ取得できればいいので
GIFのイメージのヘッダの数数えればよさそうなんですが
調べてもわかりません

250 :デフォルトの名無しさん:03/01/16 17:18
>>247 とりあえず、そのフォーマットで1行表示するルーチンね。
void dmp(char *x) {/* 入力 : x = メモリアドレス */
printf("%05ld %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %16s\r\n",
(long)(x&0x0FFFFF),(int)*(x+0),(int)*(x+1),(int)*(x+2),(int)*(x+3),(int)*(x+4),(int)*(x+5),(int)*(x+6),(int)*(x+7)
,(int)*(x+8),(int)*(x+9),(int)*(x+10),(int)*(x+11),(int)*(x+12),(int)*(x+13),(int)*(x+14),(int)*(x+14),x);
}

251 :デフォルトの名無しさん:03/01/16 17:28
>>247 それを使ってファイルを編集するmain。このアイデアで加工してね。
main(char *fname) {/*file名:起動時パラメータ*/
FILE *fp;
char wk[258];
int n;
fp=fopen(fname,"r");
while(!feof(fp)) {
fread(wk,1,256,fp);
for(n=0;n<256;n+=16) {
dmp(wk+n);
}
}
fclose(fp);
exit(0);
}

252 :デフォルトの名無しさん:03/01/16 17:32
>>249
ここ見ればわかるかも。
http://tohoho.wakusei.ne.jp/wwwgif.htm

253 :デフォルトの名無しさん:03/01/16 18:38
>>252
今そこのぺーじみてたんですが
ImageBlockの始まりのバイナリでも書いてあれば
それを検索できるのですがわからないです・・・
どこかに書いて無いでしょうか?

254 :素人でスマソ:03/01/16 19:31
 タートルグラフィックスのプログラムなのですが、  
#include <stdio.h>               
#include <ctype.h>
#include <stdlib.h>
int x,y,dx,dy;
void put_mark(int x, int y)
{ move(x-2,y-2); cont(x+2,y+2);
move(x+2,y-2); cont(x-2,y+2);
move(x,y);
}
void forward(){
x=x+dx;
y=y+dy;
cont(x,y);
put_mark(x,y);
}
void left_turn(){
int tmp;
tmp=dx; dx=-dy; dy=tmp;
}
void right_turn(){
int tmp;
tmp=dx; dx=dy; dy=-tmp;
}

   

   



255 :254の続き:03/01/16 19:32
void analysis(ch)
{
switch(ch){
case 'F': forward(); break;
case 'R': right_turn(); break;
case 'L': left_turn(); break;
}
}
void turtle()
{
int ch;
while((ch=getchar())!=EOF){
if(isalpha(ch)) analysis(ch);
}
}
int main()
{
openpl();
space(-300,-300,300,300);
x=0;
y=0;
dx=0;
dy=10;
put_mark(x,y);
turtle();
closepl();
return 0;
}
これをいじって数字を入力したらそれたを数値として読み取り、次のコマンドを繰り返し実行するようにしたいのですが、
どこをどうすればいいですか?
例えば、5Fと入力するとFFFFFとおなじ動きをする。


256 :デフォルトの名無しさん:03/01/16 19:50
>>254
こんな感じにすればいいと思う。
void analysis(int ch)
{
  static int repeat_count = -1; /* < 0 は無効値 */
  int i;
  if (ch == 'F' || ch == 'R' || ch == 'L') {
    if (repeat_count < 0) repeat_count = 1;
    for (i = 0; i < repeat_count; i++) {
      switch(ch){
      case 'F': forward(); break;
      case 'R': right_turn(); break;
      case 'L': left_turn(); break;
      }
    }
    repeat_count = -1;
  } else if (isdigit(ch)) {
    if (repeat_count < 0) repeat_count = ch - '0';
    else repeat_count = repeat_count * 10 + ch - '0';
  }
}

257 :C++厨:03/01/16 20:09
>>247
std::printf("%02X", 255);で2文字幅16進文字が出力されます
cout<<setw(2)<<setfill('0')<<hex<<255; //C++の場合


258 :254の続き:03/01/16 21:21
>>256
ありがとうございます!

259 :デフォルトの名無しさん:03/01/16 23:05
a = (x, y)
のa ってどんな値になるんですか?

260 :252:03/01/16 23:06
>>253
ImageBlockの開始は0x2cと決まってるみたいだけど,
0x2cはImageBlockの開始以外でも当然出現する可能性があるから,
0x2cの数を数えても意味が無い。

素直にHeader読んで, パレット部やデータ部は読み飛ばして,
を繰り返すしかないと思う。

261 :デフォルトの名無しさん:03/01/16 23:07
>>259
y

262 :デフォルトの名無しさん:03/01/16 23:09
>>261
まぢっすか!

263 :261:03/01/16 23:10
>>262
え?もしかしてオレ間違えた・・・?

264 :デフォルトの名無しさん:03/01/16 23:14
どういう計算になるんですか?
初心者すいません...

265 :デフォルトの名無しさん:03/01/16 23:16
カンマ演算子は右端の結果を返す。

266 :デフォルトの名無しさん:03/01/16 23:19
naruho....
madi thanx...
kanari hazukasii...

267 :261:03/01/16 23:23
とりあえずC限定として。
(C++も演算子オーバーロードしなけりゃ同じはずだけど。)

カンマ演算子(名前違ったかも)
   式1, 式2, 式3, ... ,式n
とあれば、式1から順に評価して式nまで評価する。
この式全体の値としては, 式nの評価値をとる。
だから (x, y) の値は y になる。

268 :261:03/01/16 23:23
これだけだと a = y と書いた方が簡潔なのでカンマ演算子の存在意義が
わからんと思う。あんまりいい例が思いつかなかったけど,

int a;
printf("続けるなら1を止めるなら0を入れて:");
scanf("%d", &a);
while (a) {
  printf("うんこ\n");
  printf("続けるなら1を止めるなら0を入れて:");
  scanf("%d", &a);
}

こういうループを考えたとき, 同じ処理を二箇所で書くのは
保守性などの点から不利。そこでカンマ演算子を使って,

int a;
while (printf("続けるなら1を止めるなら0を入れて:"),
     scanf("%d", &a),
     a) {
  printf("うんこ\n");
}

と一箇所に纏めることもできる。
もっといい例あるかもしれんけど俺には思いつかない。ごめん。

269 :デフォルトの名無しさん:03/01/16 23:32
>>268
カンマ演算子を使う典型的な例はfor文。
for文の括弧の中のセパレータがセミコロンのため、複数文を書きたい場合
カンマ演算子で区切って書くことが多い。

例 :
int i, j;
for (i=0, j=10; i<=10; ++i, --j)
  cout << "10 = " << i << "+" << j << "\n";

270 :261:03/01/16 23:41
>>269
ただその場合「同じ処理を二箇所に書かない」てメリットがないから
無理矢理whileでの例を作っちゃったけど。
でも確かにその方が典型的だね。whileの例が行儀のいい書き方にも見えないし。
一般的に>>268のwhileの例のような場合ってどう書くんだろ?

271 :デフォルトの名無しさん:03/01/16 23:44
みなさんどもども.
そういうように使うんすね.
for の中に並べるのは使ってましたが,
いざそう書かれると...
たった10 文字で凹んじゃいました.

272 :デフォルトの名無しさん:03/01/16 23:45
>>270
do while

273 :261:03/01/16 23:49
>>272
0回以上のループの場合よ?

あ、
do { if(...) break; ... } while(1);
て書くヤツか。

274 :272:03/01/17 00:14
>>273
うんこ見逃してた。スマソ

275 :デフォルトの名無しさん:03/01/17 01:46
numberで指定した文字列を一文字ずつ表示するプログラムをつくりなさい
と言う問題です どこが間違っているのでしょうか?
それとこれをfor文に書き換えるとどうなりますか?
#include <studio.h>
void main (void)
{
       int    i=0;
       char   number[21]='12345678901234567890";
       while(20 > ++i) {
            printf("Number is %c \n" ,  number[i])
       }
}

276 :デフォルトの名無しさん:03/01/17 01:51
#include <studio.h>
void main (void)
{
       int    i=0;
       char   number[21]="12345678901234567890";
       while(20 > i) {
            printf("Number is %c \n" ,  number[i++])
       }
}

for ( i = 0; i < 20; i++ )

277 :デフォルトの名無しさん:03/01/17 02:14
すいませんプロトタイプ宣言でわからないとこがあるんですが
/*プロトタイプ宣言*/
int wordput(char **post,char word[]);
.
int main()
.
/*関数の定義*/
int wordput(char **start,char *c){

になっている場合、**postと**startと
word[]と*cはどう対応してるんでしょうか?
プロトタイプでwordput11にはchar **,char[]の型が
必要とコンパイラに知らせたとして
後の関数で**start・*cが何を意味するのかわからないんです

278 :デフォルトの名無しさん:03/01/17 02:29
>>277
プロトタイプ宣言での変数名に意味はないので、別に
int wordput( char **, char *);
と書けばよいです。関数の定義で
int wordput(char **start,char *c){
と書き始めたなら、関数の中でstartとcを
煮るなり焼くなり好きにしてよいです。

こういう意味じゃなくて?

279 :デフォルトの名無しさん:03/01/17 02:30
引数では <type> <name>[] と <type> *<name> は同じ意味になります。
(これは厳密には C++ からの仕様だったと思います。
 確か C では本来はコンパイルエラーになるはず。
 コンパイラによってはエラー吐かないこともあるかもしれんけど)

あと、プロトタイプの変数名は特に意味を持ちません。
単にその方が分かりやすいから書いてあるだけに過ぎません。

これだけ分かってればあとは分かると思いまつ。

280 :デフォルトの名無しさん:03/01/17 02:32
>>276さんありがとうございました!

281 :デフォルトの名無しさん:03/01/17 02:41
>>279,278
ありがとうございました!
word[]と*cは同じ意味だったんですね。
形が全然違うように思えて混乱しておりました。

282 :デフォルトの名無しさん:03/01/17 02:45
>>281
同じ意味だけど、形を変えるのはホントは良くない。

283 :277:03/01/17 02:56
すいません。あともう一つ…
同じプログラムの関数の実体コードに
for(; *c; c++;){
というところがあるんですけど
char[]に置き換えると
*c=word[];
c++;=char[i+1];
なんでしょうか?
でもだとしたら終了条件のchar []
はどういう意味なんでしょうか?

284 :デフォルトの名無しさん:03/01/17 03:03
>>283
(キミ流の書き方でいくと)
*c=word[0]

285 :デフォルトの名無しさん:03/01/17 03:07
>>283
>引数では <type> <name>[] と <type> *<name> は同じ意味になります。
っていうのは、両方 <name> はポインタになるということです。
だから、別に何も変える必要はありません。

また、[ ] 演算子と * 演算子は使い方と優先順位が違うだけで
同じ演算子と思って構いません。
以下のコードは全て同じ意味になります。
*c c[0] (c + 2)[-2] *(&(c + 2)[-1]) - 1)

286 :285:03/01/17 03:08
もちろん変数を宣言するときは別物です。> * と [ ]
但し、引数の場合の例外を除きます。

287 :デフォルトの名無しさん:03/01/17 03:15
>>283
そのforループではchar ss[](と勝手におかせて)という文字列を
ss[0]から順に一文字づつ見ていくものだと思うです。
んでssの終端にはヌル文字が入ってるはずなので、そこで*cが偽になる
という話だと思います。

あと、=は代入演算子に読めるので書き方がマズー。
もう一つ、for()の2番目は終了条件じゃなくて継続条件です。

288 :277:03/01/17 03:18
>>283
ごめんなさい、間違えました

>>285
ポインタになるんですか〜
その説明だとすごくわかりやすいです。
ありがとうございました!

289 :285:03/01/17 03:24
× *(&(c + 2)[-1]) - 1)
○ *(&(c + 2)[-1] - 1)
カッコの数間違えた。

290 :277:03/01/17 03:25
>>
あっ、範囲の指定はforの1番目だったんですよね。失礼しました。

291 :デフォルトの名無しさん:03/01/17 03:27
>>290
んんー。
for 文は
 for(<最初に一度だけ処理する式>; <継続条件式>; <ループの終わりに毎回処理する式>) <ループ処理する文>
ですよ。

292 :277:03/01/17 03:37
>>289
なるほど!間違えてばかりですね。
ごめんなさい

ところで
*(&(c+2)[-1]-1)
cには'+'だけど[]の中では
'-'になるのってどうしてですか?

293 :デフォルトの名無しさん:03/01/17 03:40
>>292
+2 して -1 して -1 すれば 0 になるので
c[0] と同じになる、というだけです。

> 間違えてばかりですね。
ドンマイ。
失敗は成功の元。

294 :277:03/01/17 03:47
>>293
そっか!じゃぁ
c+1==[1]ってことでいいんですよね?

ありがとうございます!
がんばって勉強します。

295 :デフォルトの名無しさん:03/01/17 03:48
>>294
*(c+1) と c[1] が一緒、ね。
さて、寝るか。

296 :277:03/01/17 03:52
>>295
遅いのにホントありがとうございました。
すごく助かりました
おやすみなさい(^^)/

297 :デフォルトの名無しさん:03/01/17 06:03
float型の数字をchar buf[256]にいれたいんですが、どうすればよいでしょうか。

298 :bufさんのカバン:03/01/17 06:11
*buf=(char)myfloat;

299 :デフォルトの名無しさん:03/01/17 06:13
(int)*chStr と (int)(*chStr) は同じですか?

300 :デフォルトの名無しさん:03/01/17 06:15
>>298
なんかその数字は構造体にはいっていて、キャストできないとかいわれるんですが、なんか僕まちがってますかね?






301 :デフォルトの名無しさん:03/01/17 06:16
http://www6.ocn.ne.jp/~endou/index2.html
     ★YAHOOOプロフィール★

302 :デフォルトの名無しさん:03/01/17 06:24
>>297
sprintf

303 :デフォルトの名無しさん:03/01/17 06:55
>>300
マジか?
つーか、そのコンパイラは、どうやって、実数を代入してるんだ?
まぁ、何にしろ、特殊な環境っぽいので
リファレンスでも適当に読んで代入方法を探してみ

304 :デフォルトの名無しさん:03/01/17 09:38
reinterpret_cast とか。

305 :デフォルトの名無しさん:03/01/17 13:41
>>299
同じ。
C++ なら int(*chStr) も。

306 :デフォルトの名無しさん:03/01/17 16:49
>>298
sprintf(buf, "%f", myfloat);
だろ。

307 :デフォルトの名無しさん:03/01/17 19:27
C言語ではキーボードから矢印キーを入力して、
それがどの方向のキーかによって、
それに応じた処理をやらせることはできないんですか?
例えばswitch文あたりで
switch(…){
case キーボードの↑:
処理1;
break;
case キーボードの↓:
処理2;
break;
……………
}
のようなことをしたいのですが。

308 :デフォルトの名無しさん:03/01/17 19:30
>>307
まさにそんなふうにできます。

309 :デフォルトの名無しさん:03/01/17 22:41
>>307
_getch()
WM_CHAR

310 : :03/01/17 23:50
教えてください

Cでsnprintfを自作することになりました。
参考になる資料とかありましたら教えてください。
フリーで使えるソースが何処かに落ちていると良いのですが。

311 :デフォルトの名無しさん:03/01/17 23:52
マルチ ハ ヤメテ!!

312 :デフォルトの名無しさん:03/01/18 00:29
>>310
snprintf(dest,〜)
 char buf[100000];
 sprintf(buf,〜);
 strncpy(dest,buf,n

313 :307:03/01/18 00:43
>>308
どうやればできますか?

>>309
_getch()という関数はどのヘッダーファイルに定義されてるんでしょうか?
curses.hの中にgetch()があるのは発見したのですが、
それは使えますか?またWM_CHARもどこに定義してあるのか
分かりません。


314 :デフォルトの名無しさん:03/01/18 00:49
>>313
俺はよく unistd.h をインクルードしてますね。
Windows 系では conio.h で、#if で分けてます。

WM_CHAR は Windows プログラムのやつです。

315 :デフォルトの名無しさん:03/01/18 00:59
>>307
環境依存の問題なのでココでは終了した旨を書き込んでから
自分の使ってる環境のスレで聞い下さい

316 :307:03/01/18 01:19
>>314
WM_CHARはWindowsですか。当方UNIXなので使えないのかな。

>>315
システム依存の話になるんですね。
わかりました。自分のシステムに該当しそうな所のスレで尋ねます。

317 :デフォルトの名無しさん:03/01/18 11:49
C言語で、まず正の整数を入力し
それが素数かどうかを判定するプログラムを教えてください

※ループ回数を最小限にする

今はwhile文までしか習ってないのでwhile文を使うと思うのですが・・・

318 :デフォルトの名無しさん:03/01/18 15:03
>>316
ncurses

319 :デフォルトの名無しさん:03/01/18 15:13
>>317
「エラトステネスのふるい」で検索してみれ。

320 :デフォルトの名無しさん:03/01/18 20:33
age

321 :デフォルトの名無しさん:03/01/18 22:23
>>319
この場合nまでの素数ではなくてnが素数かどうかって話だからエラストテネス関係ないだろ。
フラグ立てるのにもループしちゃうし。
多分、「nが素数かを確認するには2から√nまでで割り切れないことを確認すればいい」
つー奴のほうだと思うが。


322 :デフォルトの名無しさん:03/01/18 23:28
if(n%2==0){printf("not prime.");exit(0);}
for(i=3; i<sqrt(n); i+=2)
if(n%i==0){printf("not prime.");exit(0);}
printf("PRIME No.");
じゃ駄目か?

323 :デフォルトの名無しさん:03/01/18 23:54
>※ループ回数を最小限にする
これって真面目にやろうとしたら世界最先端レベルの研究になるような。

>>321のやりかたで多分, 出題者の意向には沿ってるんだろうけど。

324 :デフォルトの名無しさん:03/01/19 01:01
下に示した菱形をプリントするプログラムを書け
アスタリスクを一個だけプリントするprintfと空白を一個だけプリントするprintf()
を使用すること。ただし、for反復を可能な限り入れ子にし、printfを最小限に抑えること
----*
---***
--*****
-*******
*********
-*******
--*****
---***
----*
(-はずれ防止のためですスペースに置き換えてください)

うーむ、いくら考えても思いつかんす・・・、どなたか救済を!

325 :デフォルトの名無しさん:03/01/19 01:09
>>324
> うーむ、いくら考えても思いつかんす・・・

ワラタよY⌒Y⌒Y⌒Y⌒Y⌒Y⌒(。A。)!!!

326 :デフォルトの名無しさん:03/01/19 01:15
>1
>Javaと基本情報もやっている.

なんかリアルだな.1の台詞はキャラジャナカッタノカ?

327 :デフォルトの名無しさん:03/01/19 01:17
>>324
#include <stdio.h>

#define ROWS 9

int main() {
int i;
for ( i = 0; i < ROWS; i++ ) {
int nspaces = (ROWS-1)/2 - i;
int nasts, j;
if ( nspaces >= 0 ) {
nasts = 2*i + 1;
} else {
nspaces = -nspaces;
nasts = 2*(ROWS-1-i) + 1;
}
for ( j = 0; j < nspaces; j++ )
printf( " " );
for ( j = 0; j < nasts; j++ )
printf( "*" );
putchar( '\n' );
}
return 0;
}

328 :デフォルトの名無しさん:03/01/19 01:19
>>324
余り深く考えるな。

#include <stdio.h>

void a(void){printf("*");}
void s(void){printf(" ");}
void r(void){printf("\n");}

int main(void)
{
s();s();s();s();a();r();
s();s();s();a();a();a();r();
s();s();a();a();a();a();a();r();
s();a();a();a();a();a();a();a();r();
a();a();a();a();a();a();a();a();a();r();
s();a();a();a();a();a();a();a();r();
s();s();a();a();a();a();a();r();
s();s();s();a();a();a();r();
s();s();s();s();a();r();
return 0;
}


329 :デフォルトの名無しさん:03/01/19 01:26
>>325
うぃ、アフォで須磨祖
>>327
ありがとうございます。これで今夜は眠れそうです。
>>328
うーん、ネタどうもっす。


330 :デフォルトの名無しさん:03/01/19 01:28
>>324
ちっ、遅かったか

int main() {
int i,j ;
for(i=0;i<9;i++){
for(j=0;j<(i-4)*(i-4)*(-5*i*i*i*i*i*i+120*i*i*i*i*i-1046*i*i*i*i+3936*i*i*i-5921*i*i+3336*i+1260)/5040;j++)printf("-");
for(j=0;j<(5*i*i*i*i*i*i*i*i-160*i*i*i*i*i*i*i+2086*i*i*i*i*i*i-14224*i*i*i*i*i+54145*i*i*i*i-113680*i*i*i+120164*i*i-43296*i+2520)/2520;j++)printf("*");
printf("\n");
}
for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;)for(;0;);
return 0 ;
}


331 :デフォルトの名無しさん:03/01/19 01:28
>>322
sqrt(n) の結果は一時変数に入れといた方がいいし、
+ 0.5 しとかないと数値誤差で死ぬことが。

332 :328:03/01/19 01:32
>>329
良かったら、これがなぜネタだと思ったか教えてくれないか?


333 :デフォルトの名無しさん:03/01/19 01:32
>>324
#include <stdio.h>
#include <stdlib.h>

中略

int i, j;

for (i=0; i<9; i++) {
 for (j=0; abs(i-4)>j; j++)
  printf(" ");
 for (j=0; 9-abs((i*2)-8)>j; j++)
  printf("*");
 puts("");
}

30分かかった。アホだ俺。。。

334 :デフォルトの名無しさん:03/01/19 01:43
>>328さん
別に怒らせるつもりで言ったのではないのです、ごめんなさい。

ただ、forがネストされていず、むやみに関数を定義されていたので
そう思ったのです。


335 :デフォルトの名無しさん:03/01/19 01:44
#include<stdio.h>
#include<math.h>

#define RANGE 4

int main()
{
int x,y;

for(y=-RANGE;y<=RANGE;y++){
for(x=-RANGE;x<=RANGE;x++){
if(abs(y)<=abs(-x+4) && abs(y)<=abs(x+4)) printf("*");
else printf("_");
}
printf("\n");
}
return 0;
}

336 :デフォルトの名無しさん:03/01/19 01:48
>>334
>>328 は怒っていないと思われ。
むしろ喜ばしいことだと思ってるだろう。

337 :デフォルトの名無しさん:03/01/19 01:49
>>335
> if(abs(y)<=abs(-x+4) && abs(y)<=abs(x+4)) printf("*");

if(abs(y)<=abs(-x+RANGE) && abs(y)<=abs(x+RANGE)) printf("*");
だな。

338 :デフォルトの名無しさん:03/01/19 02:35
>>334
怒っていない。勿論ネタだ(w
しかし、それをなぜネタと考えた(見破った?)のかが
純粋に知りたかった(&考えてもらいたかった)だけだ。
たとえば、行数で比べるなら>>328のコードは>>327よりも少ないし、
関数の定義も3つだけだし(一般にはむやみというレベルではないと思う)
for文も使っていないし、というか
ただ使うだけなら

int main(void)
{
int i,j;
for(i=0;i<1;i++)for(j=0;j<1;j++){
s();s();s();s();a();r();

みたいな手はいくらでも考えられる。

339 :さとしがヤバイ:03/01/19 02:51
#include<stdio.h>
#include<stdilib.h>

この部分を補う
  
FILE fout;

if((fout=fopen("c:\\rscore.dat","w"))==NULL){
printf("出力ファイルがオープンできない\n");
exit(1);
}

この部分を補う

のこの部分補うっていうのも二つとも教えて下さい
お願いします

340 :デフォルトの名無しさん:03/01/19 02:57
>>339
#include<stdio.h>
#include<stdlib.h>

int main(void){
FILE *fout;

if((fout=fopen("c:\\rscore.dat","w"))==NULL){
printf("出力ファイルがオープンできない\n");
exit(1);
}

fclose(fout);
printf("友達の宿題を写しました\n先生ごめんなさい\n");
return 0;
}

341 :デフォルトの名無しさん:03/01/19 03:02
しかし、ネタ以外に答えようがないね。

342 :デフォルトの名無しさん:03/01/19 03:03
324です
うす、実は今独習でCを一から勉強して(遊んで?)いるところです。
参考書に”C言語プログラミング(原書C How to Program) プレンティスホール刊”
ってやつを使っていまして、その練習問題だったわけです。

結構ためになる本と個人的には思っているのですが、いかんせん練習問題の
数があるにもかかわらず、その模範解答がなく、原作者のHPにもそれらしきもの
がなかったのでお聞きしてしまいました。

どうもこう、数学的というか、論理的に解を導くというか、
そういうことが苦手みたいで、こういう一方的な作業がトンと苦手だったりします。
数学なんか高校で0点とったこともあるし(単にアホなだけか

んな人間がプログラムするってんですから、じつは338さんの答えが
一番自分に合っていたりするのが、面白いところです。
何か作れるぐらいの技量をもてるようになる暁には、こういう
発想で組めたらいいなー。

あと、”むやみ”というのは私の言葉が明らかに間違っていました。失礼!

みなさん、お答えサンクスです

343 :デフォルトの名無しさん:03/01/19 03:10
>>342
一応言っておくが、
>>333 が模範解答だからな。

344 :デフォルトの名無しさん:03/01/19 04:05
>>342
こんな手もありまつ
int main(){
int i,j,p[]={2046,5630,21886,87390,349526,87390,21886,5630,2046};
for(i=0;i<90;i++)
if((j=((p[i/10]>>(9-i%10<<1))&3))==0)printf(" ");
else if(j==1)printf("*");else if(j==2)printf("\n");
return 0;}

345 :デフォルトの名無しさん:03/01/19 04:32
ここ行って来い!
ってネタが沢山出てまつね。
http://pc3.2ch.net/test/read.cgi/tech/1042802490/l50

346 :デフォルトの名無しさん:03/01/19 08:00
>>343
abs() をループ毎に計算させておきながら模範とはよく言った。

347 :デフォルトの名無しさん:03/01/19 10:23
abs なんて xor, sub, cmovns で終わりジャン。

348 :デフォルトの名無しさん:03/01/19 11:05
>>347
無知ってのは楽でいいな

349 :デフォルトの名無しさん:03/01/19 11:16
#include <math.h>
#include <stdio.h>

main(){
 int i,j;
 for(i=1; i<=9; i++)
 {
  int zettaichi=abs(i-5);
  for(j=0; j<zettaichi; j++)
   printf(" ");
  for(j=0; j<9-2*zettaichi; j++)
   printf("*");
  puts("");
 }
 return 0;
}


350 :デフォルトの名無しさん:03/01/19 11:23
>>333
後略が無いから正常終了しないな。

351 :デフォルトの名無しさん:03/01/19 11:33
>>349
int i,j;
int zettaichi=abs(i-5);

気持ち悪い。

352 :デフォルトの名無しさん:03/01/19 11:35
k <= zettaichi

353 :デフォルトの名無しさん:03/01/19 11:52
>>342よ、騙されるな!
本当の模範解答とはこういう奴だ。

#include <stdio.h>
#define N 4

void p(int n){printf("%*c",n+1,'*');while(n++<N)printf("**");printf("\n");}
void f(int n){p(n);if(n){f(n-1);p(n);}}
int main(void){f(N);return 0;}


354 :デフォルトの名無しさん:03/01/19 12:42
for使うんじゃなかったっけ?

355 :デフォルトの名無しさん:03/01/19 13:47
>>354
真の模範解答とは・・・

真の模範解答とは、問題文の制約を墨守する事ではない。
むしろ問題文自体に含まれる矛盾・不合理を剔抉し、
それを止揚するものでなくてはならない。

また蛇足だが、問題文には for を使わなければならないという制約はない。
もう一度読み返してもらいたい。
>for反復を可能な限り入れ子にし、
即ち

∀x(for文が使用されている(x)⇒出来る限りネストする)

であり、使用しない場合は '真' となることは明白だ。

私としては、むしろ
>アスタリスクを一個だけプリントするprintfと空白を一個だけプリントするprintf()
>を使用すること。
について指摘をしてもらいたかったが。

356 :デフォルトの名無しさん:03/01/19 13:53
おいお前ら、漏れならこうするぜ。
ひし形以外に、即、変更可能だ。

#define NL 9
char *a[NL] {
"----*",
"---***",
"--*****"
"-*******",
"*********",
"-*******",
"--*****",
"---***",
"----*",
};

int i, j;
for (i = 0; i < NL; ++i) {
for(j = 0; a[i][j]; ++j)
(a[i][j] == '*') ? printf("*") : printf("_");
puts("");
}


357 :デフォルトの名無しさん:03/01/19 14:02
>>356
んじゃ、13角形をたのむわ。

358 :デフォルトの名無しさん:03/01/19 16:45
ツマンネ

359 :デフォルトの名無しさん:03/01/19 17:42
>>348
abs は最適化によって for の前に処理される罠。

360 :333:03/01/19 23:03
>>359
俺が言うのもなんだけど, それ本当?
absがグローバル変数を触らないってことが,
どうしてコンパイラにわかる?

煽りじゃなく無知ゆえの疑問です。

361 :333:03/01/19 23:10
あと質問だけど, 高速なabsってどうやって書く?
とりあえず環境は VC++6 で。

俺が考えたやつ。
(a ^ (a >> 32)) - (a >> 32)

362 :デフォルトの名無しさん:03/01/19 23:17
>(a ^ (a >> 32)) - (a >> 32)
処理系依存と未定義の塊だな

363 :333:03/01/19 23:23
>>362
だから処理系指定したんだけど。。。
定義はint a;です。

364 :デフォルトの名無しさん:03/01/19 23:34
普通に a > 0 ? a : -a でいいんでないかと。

365 :デフォルトの名無しさん:03/01/19 23:34
未定義は
The behavior is undefined if the right operand is negative,
or greater than or equal to the length in bits of the promoted left operand.

366 :デフォルトの名無しさん:03/01/19 23:35
>>360
>>359 の言うような最適化をするかどうかは知らんけど...

> absがグローバル変数を触らないってことが,どうしてコンパイラにわかる?

わかる (と言うか教えている) 処理系あるよ。

例えば、VC++ 6.0 だと...

/Oi オプションを指定すると、次の関数が組み込み (インライン) 形式に置き換えられます。
_disable(), _outp(), abs(), memset(), _enable(), _outpw(), fabs(), strcat(), _inp(), _rotl(), labs(), strcmp(), _inpw(), _rotr(), memcp(), strcpy(), _lrotl(), _strset(), memcpy(), strlen(), _lrotr()

となってる。当然コンパイラは、関数の挙動は知ってるわけ。

また、GCC なんかでは拡張機能で、

int abs(int) __attribute__ ((const));

と宣言しておけば、abs() の引数が同じなら、返り値が変わらないことをコンパイラに教えることができる。

> 煽りじゃなく無知ゆえの疑問です。

そう言う疑問を持つことはいいことだ。

>>361
普通に、return a >= 0 ? a : -a; の方が早いと思うぞ。
また、>>361 は環境に依存してるしね。

367 :333:03/01/19 23:43
>>365
そう言う意味か。ごめん。a>>31ってすればいいのか。
ていうかそもそも分岐使った方が速いのか。

>>366
詳しくありがとう。
確かにそういう機能がないと最適化がすぐ手詰まりになりそう。
勉強になりました。

368 :デフォルトの名無しさん:03/01/19 23:46
>>>>>>>>>>>>>>>>>>>>>>>>a > 0 ? a : (-1*a)

369 :デフォルトの名無しさん:03/01/19 23:56
max(a,-a)

370 :359:03/01/19 23:56
>>366
そういうことです。
まぁ、どのコンパイラでも保証されるわけじゃないんですけどね。

371 :デフォルトの名無しさん:03/01/20 00:00
>>367
どうしても、それでやりたいのなら
a>>(sizeof(a)*CHAR_BIT-1)

372 :デフォルトの名無しさん:03/01/20 00:28
#define BITSOF(a) (sizeof (a) * CHAR_BIT)

373 :333:03/01/20 00:48
>>371
もともと負数の右シフトが処理系依存だし, それで可搬性が上がったと
いえるかどうか疑問です。

ところで, ちょっとテストしてみました。VC++6とWinXPとPen4-1.6。
実行速度で最適化。めんどいから概要だけ書くと, 実行時間の比率で

正の数のみ入力 -> 分岐:ビット = 2.05:1
負の数のみ入力 -> 分岐:ビット = 2.68:1

くらいの感じ。最適化なしだと1.2:1くらいに差は縮まりますた。
#いや・・・ビットシフト凄いだろってことじゃなく,
#単に個人的な好奇心です。可搬性の問題も認識してます。
#スレ汚しすまそ。

374 :デフォルトの名無しさん:03/01/20 11:43
ガウス分布(正規分布)の乱数を発生させる関数を作りたいのですが、
平均と、分散を可変にするようにしたいです。
考えてみたのですが、全くわからず、
検索しても、ソース見つからなかったんで、質問させていただきました。
よろしくお願いいたします。

375 :デフォルトの名無しさん:03/01/20 12:55
ttp://glass.ipe.tsukuba.ac.jp/~s990388/study/homework/report3.pdf
の2.2.1は?

376 :374:03/01/20 20:24
>>375
ありがとうございます。
早速やってみます。

377 :デフォルトの名無しさん:03/01/20 20:37
>>376
http://www.matsusaka-u.ac.jp/~okumura/algo/
からゲットできるalgo.lzhの中のrandom.cも見てみてちょ。

378 :317:03/01/20 22:40
一応自分で考えたんですが

#include <stdio.h>
void main(void)
{
int i, n;
i = 2;
printf("自然数を入力してください: ");
scanf("%d", &n);
printf("%dは", n);
if (n == 1){
printf("素数ではありません.\n");
}
while (i < n){
if (n % i == 0){
printf("素数ではありません.\n");
}
i++;
}
printf("素数です.\n");
}

379 :317:03/01/20 22:42
これだと実行結果に
「3は素数ではありません
 素数です」
と出力されてしまします

まだreturn文やfor文は習っていないのでそれらは使わずに(それより難しい方法も)
解決する方法はありませんか?

380 :デフォルトの名無しさん:03/01/20 22:50
>>317
最後のwhile内のif内で、'i=0;break;'となど付加して、
 printf("素数です.\n");
の前で、
 if(i!=0)
を付けておけば?

381 :デフォルトの名無しさん:03/01/20 23:11
>>317
#include <stdio.h>
int main(void)
{
int i, n, flag;
i = 2;
printf("自然数を入力してください: ");
scanf("%d", &n);
printf("%dは", n);
flag = 0;
while (i < n){
if (n % i == 0)
flag = 1;
i++;
}
if(flag==1)
printf("素数ではありません.\n");
else
printf("素数です.\n");
return 0;
}


382 :デフォルトの名無しさん :03/01/20 23:54
御願いします。
an=1/nという数列の和が100になるまでの経過を見るという
プログラムを作るのですが、
和が10,20,…100となるときのかかった時間を計測する
と言う問題で
時間の測り方がわかりません。
誰か教えて下さい。

383 :デフォルトの名無しさん:03/01/21 00:04
例えば100000万回くらい繰り返させてストップウォッチ計測

・・・もっと高度な方法もあるが,始めはここからでしょう

384 :383:03/01/21 00:06
うわすごい回数言ってもた...
間違いだ,悪いが自力でなんとかしろ

385 :デフォルトの名無しさん:03/01/21 00:08
>>382
timeGetTime()
Windowsならばの話

386 :317:03/01/21 00:08
>>380-381
無事成功いたしました
こんな初歩的な質問に答えていただきありがとうございました

387 :デフォルトの名無しさん:03/01/21 00:13
>>382
プロセスの経過時間でいいならclock()/CLK_TCK

388 :デフォルトの名無しさん:03/01/21 00:21
>>382
標準関数ならclockというのがある。

clock_t clk;

clk = clock();
処理A
printf("%f sec\n", (clock()-clk)/(float)CLOCKS_PER_SEC);

これで処理Aにかかった時間が秒単位で表示される。

389 :デフォルトの名無しさん:03/01/21 00:37
>>382
Unixならcshのtimeか、外部プログラムのtime,
Solarisならrusageもつかえる。

ストップウォッチなどによる計測はだめだよ〜。

390 :382:03/01/21 01:13
レスありがとです。
timeやclockを使うとき,和が100になるまでのじかんは
start = clock();
for(i = 1;sum<=100;i++)
{x=1/i;
sum=sum+x;}
end = clock();
で計測するとして、和が10や20を超えるまでの時間は
どうすればいいのでしょうか?
↑の計算途中でtime取得のタイミングがわからないのですが。

391 :デフォルトの名無しさん:03/01/21 01:21
j=10;
start = clock();
for(i = 1;sum<=100;i++)
{if(sum<=j){clk[j/10-1]=clock;j=j+10}
x=1/i;
sum=sum+x;}
end = clock();

こんな感じかな。

392 :382:03/01/21 01:44
>391 サンクス
ただ、
if(sum<=j)という条件だと変数clk[]が
膨大な配列になってしまうと思うんですが。
どうでしょう。

393 :デフォルトの名無しさん:03/01/21 02:20
>>392
そうだね。。。ごめんよ。。。

394 :デフォルトの名無しさん:03/01/21 02:50
>393 サンクス
ただ、
clk[j/10-1]=clock;だと
変数clk[]がclock()へのポインタになってしまうと思うんですが。
どうでしょう。

395 :デフォルトの名無しさん:03/01/21 02:57
>>394
そうだね。。。ごめんよ。。。

てかそこまでわかってんなら自分で書こうよ。。。

396 :デフォルトの名無しさん:03/01/21 09:53
ワラタ

397 :デフォルトの名無しさん:03/01/21 18:06
宿題やらせろや( ゚Д゚)ゴルァ!

確認しておきたいのですが>all
この擦れは、依頼人のスキルの上達なんてことは一切考えず、
他人の宿題をやってしまうスレですよね。
たまに、「本人のためにならないから、後は自分で考えろ!」という
パピコがありますが、それは別スレだった筈ですが。

398 :デフォルトの名無しさん:03/01/21 19:44
「本人のためにならないから、後は自分で考えろ!」ってのはダメでいいけど、
「面倒臭くなったから、後は自分で考えろ!」ってのはありにして欲しいなぁ。

399 :デフォルトの名無しさん:03/01/21 21:10
>>398
御意

400 :デフォルトの名無しさん:03/01/21 21:14
でも、実際には
・ネタで答えられる → 写していったらアホ
・非常に高度に答えられる → 誰かにやってもらったのバレバレ
・他の質問スレと同じ状況になる → スレ違いだが本人のためにはなる
のどれかになってる気が。

401 :デフォルトの名無しさん:03/01/21 21:35
void CServerSampleDlg::OnRButtonDblClk(UINT nFlags, CPoint point)//接続開始
{
_beginthread(&BThread,0,this);
CDialog::OnRButtonDblClk(nFlags, point);
}
void CServerSampleDlg::BThread(LPVOID xParam)//一段目のスレッド
{
CServerSampleDlg *pDlg;
pDlg = (CServerSampleDlg *)xParam;
pDlg -> InitServer();
}
void CServerSampleDlg::OnReceive()
{
char cBuffer[256];
recv(m_YourSocket,cBuffer,256,0);
m_EditReceive=cBuffer;
}
void CServerSampleDlg::Thread(LPVOID pParam)
{
CServerSampleDlg *pDlg;
pDlg = (CServerSampleDlg *)pParam;
EnterCriticalSection(&g_section);
pDlg -> OnReceive();
LeaveCriticalSection(&g_section);
//pDlg -> CloseServer();
}

402 :デフォルトの名無しさん:03/01/21 21:36
BOOL CServerSampleDlg::InitServer()
{
//接続
WSADATA wWsaData;
unsigned short sPort=2000;//ポート番号
CString ClientIPAddr=m_EditSend;//クライアントのIPアドレス
if(WSAStartup(MAKEWORD(2,0),&wWsaData)!=0)
return FALSE;
m_MySocket=socket(PF_INET,SOCK_STREAM,0);
if(m_MySocket==INVALID_SOCKET)
return FALSE;

m_SockAddr.sin_family=PF_INET;
m_SockAddr.sin_port=htons(sPort);
m_SockAddr.sin_addr.s_addr=inet_addr(ClientIPAddr);
memset(m_SockAddr.sin_zero,(int)0,sizeof(m_SockAddr.sin_zero));
int SockAddrSize=sizeof(m_SockAddr);

if(bind(m_MySocket,(struct sockaddr *)&m_SockAddr,sizeof(m_SockAddr))!=0)
return FALSE;
if(listen(m_MySocket,1)!=0)
return FALSE;

for(;;){
m_YourSocket=
accept(m_MySocket,(struct sockaddr *)&m_SockAddr,&SockAddrSize);
_beginthread(&Thread,0,this);//二段目のスレッド
}
return TRUE;
}

403 :デフォルトの名無しさん:03/01/21 21:37
二つのクライアントからソケットでメッセージを受け取れるサーバーを作りたいのですが
>>401-402のソースだと接続時にassation(たしか)と出てしまいます。
汚いソースで申し訳ないのですが流れ的に変な過程(行)を指摘していただけないでしょうか
よろしくお願いします


404 :毒狂大生:03/01/21 21:46
http://kasiwagi.dokkyo.ac.jp/~toshiko/lecture/lect3/SCHEDULE/select.php3
ここのC++の問題を全てやってくださると助かる(汗

405 :デフォルトの名無しさん:03/01/21 21:53
>>404
( ゚д゚) ポカーン

406 :デフォルトの名無しさん:03/01/21 21:55
>>404
> フローチャートとプログラムおよび処理結果をMS-Wordで編集

ムリだ。

407 :デフォルトの名無しさん:03/01/21 21:57
>>404
> #include<iostream.h> // iostream.h:標準入出力ヘッダファイル
> void main(void) // main:メインプログラム

この問題の出題者は頃しておけ。

408 :毒狂大生:03/01/21 22:01
授業はほとんど出席したけど、結構年いった婆さんが先生で、何言ってるか意味不明でした・・・

409 :デフォルトの名無しさん:03/01/21 22:01
>>406
出題コードは痛いが
Wordはフローチャート得意だぞ

410 :デフォルトの名無しさん:03/01/21 22:04
全部って言っても2つだけなんだね。がんばれよお前ら。

411 :デフォルトの名無しさん:03/01/21 22:06
401-402、誰かちょっとでいいので見て・・

412 :デフォルトの名無しさん:03/01/21 22:06
>MS-Wordで
組版環境まで指定しないで欲しい。。。

413 :デフォルトの名無しさん:03/01/21 22:09
>>410
読みが浅い。

414 :デフォルトの名無しさん:03/01/21 22:11
>>409
得意不得意の話じゃないぞ。
回答を Word で作ってうpしろというのか?

415 :デフォルトの名無しさん:03/01/21 22:12
>>411
見ることは見たが、漏れには MFC なんぞわからん。

416 :C++厨:03/01/21 22:15
>>404
30門くらいあるの?

417 :毒狂大生:03/01/21 22:15
課題(3)のほうはなんとかできましたが、課題(4)のほうがサッパリ(汗

418 :デフォルトの名無しさん:03/01/21 22:17
>>417
できたんかよ課題(3)。いまやってたのに。。。

419 :デフォルトの名無しさん:03/01/21 22:18
>>415 すみません、、誰か分かる方いらっしゃったらよろしくお願いします。
今も考えてるんですが どういう流れにすればよいのか分かりません

420 :デフォルトの名無しさん:03/01/21 22:24
>>414
そうだろ

コンパイル通るかどうかとか
実行が正常かどうかは
受講者の領分

講師の仕事は受講者が自分の領分をまっとうする手伝いだ
WordどころかPDFで十分

421 :毒狂大生:03/01/21 22:27
>>418サマ
自分のと比べてみたいので是非とも作ってくださるとうれしいです(^^;

422 :デフォルトの名無しさん:03/01/21 23:04
>>421
ごめん面倒くさい。
特に変なことしなきゃ誰でも似たような回答に辿り着くと思うので,
俺が書くより421さんのを貼ってみんなに添削してもらったほうが
早くて高クオリティかと。

423 :毒狂大生:03/01/22 11:41
http://www.geocities.co.jp/Playtown-Yoyo/8791/p.zip

問題17まではなんとかなったけど、18以降はサッパリっす(汗

424 :デフォルトの名無しさん:03/01/22 13:27
ベクトル{ai}を定義し、y=exp(-x);0≦x≦1をベクトルで表せ
をCで組んでもらえませんか?

425 :デフォルトの名無しさん:03/01/22 13:32
いや、ぜんぜんわからんわー
y=1;
for(i=0; i<=100; i++)
{
yy=y;
y=-1*exp(-1*i/100.0);
line(x,y,i/100,yy);
}


426 :424:03/01/22 13:41
>>425
何番へのレスですか?

427 :デフォルトの名無しさん:03/01/22 14:02
問題の意図がわからん。

428 :デフォルトの名無しさん:03/01/22 15:48
>>424 意味がワカリラリン。問題全部貼れ。

429 :毒狂大生:03/01/22 16:21
short int large(short int a,short int b) // 関数値の型と、
{ // 仮引数(与えられるデータの型と仮の名)の指定をする
if(a>=b) return(a); // 関数値(結果として返されるデータ)の設定
else return(b);
}

これのサブプログラムを改造して、3個の整数の最大値を求めるサブプログラム「
short int max3(short int a,short int b,short int c)」
を作れっていうんですけどどうやればいいのでしょうか?

430 :デフォルトの名無しさん:03/01/22 16:31
サブプルグラムキタ━━━━(゚∀゚)━━━━!!

431 :デフォルトの名無しさん:03/01/22 16:36
なめた問題だ

432 :デフォルトの名無しさん:03/01/22 16:38
return large(large(a, b), c);

433 :デフォルトの名無しさん:03/01/22 16:39
short int max3(short int a,short int b,short int c)
{
  return max(max(a,b),c);
}

434 :デフォルトの名無しさん:03/01/22 16:48
>>429
short int large(short int a,short int b)
{
return a > b ? a : b;
}

435 :デフォルトの名無しさん:03/01/22 16:52
とりあえず434はバカなわけだが

436 :毒狂大生:03/01/22 16:58
short int max3(short int a,short int b,short int c)
{
int maxval;
maxval=a;

if(b>maxval)
maxval=b;

if(c>maxval)
maxval=c;

return(maxval);
}

こんな感じでもOKですか?

437 :毒狂大生:03/01/22 17:00
メインはこんな感じにしてみました
#include<iostream.h>
#include "sub.cpp"
void main(void)
{
short int x,y,z,max;
cout<<"最初の整数データを入力してください ";
cin>>x;
cout<<"最初の整数データを入力してください ";
cin>>y;
cout<<"最初の整数データを入力してください ";
cin>>z;
max=max3(x,y,z);
cout<<max<<endl;
}


438 :毒狂大生:03/01/22 17:00
あう、全部最初のデータになってる(汗

439 :デフォルトの名無しさん:03/01/22 17:08
間違ってはない。

440 :デフォルトの名無しさん:03/01/22 17:25
>ドッキョウ大生タン
最終課題をCで書いてみますた。貼っていい?

441 :毒狂大生:03/01/22 17:25
float average(int array[],int n)
{
int i,ave,total=0;
for(i=0; i<n; i++) total+=array[i];
ave=total/n;
return(ave);
}

次は一次元配列の平均を求めるサブプログラム作ってるんですが、これだとエラーがでちゃうんですが、どこが狂ってます?

442 :デフォルトの名無しさん:03/01/22 17:26
>>441
aveをfloatで定義してみ。

443 :毒狂大生:03/01/22 17:28
ありがとうございます、aveとtotalをfloat定義したらできました

444 :デフォルトの名無しさん:03/01/22 17:33
>>443
>>440どうするよ?

445 :しつこくてスマソ:03/01/22 17:45
void analysis(int ch)
{
static int repeat_count = -1; /* < 0 は無効値 */
int i;
if (ch == 'F' || ch == 'R' || ch == 'L') {
if (repeat_count < 0) repeat_count = 1;
for (i = 0; i < repeat_count; i++) {
switch(ch){
case 'F': forward(); break;
case 'R': right_turn(); break;
case 'L': left_turn(); break;
}
}
repeat_count = -1;
} else if (isdigit(ch)) {
if (repeat_count < 0) repeat_count = ch - '0';
else repeat_count = repeat_count * 10 + ch - '0';
}
}

解説お願いします。
if (repeat_count < 0) repeat_count = 1;
for (i = 0; i < repeat_count; i++)
ってこのプログラムではどういう働きをしているの?


446 :毒狂大生:03/01/22 17:54
>>440
お願いいたします、張ってください〜

447 :C++なんかワカンネ440:03/01/22 17:56
分割して貼ります。
#include<stdio.h>
#include<string.h>

#define BUFSIZE (256)
#define MAXSTUDENT (100)
#define MAXNAME (32)

struct student{
char name[MAXNAME], yomi[MAXNAME];
int a, b, sum;
};

int yomisort( int, struct student **);
int sumsort( int, struct student **);
int myfprint( FILE *, int, struct student **, char *);

448 :C++なんかワカンネ440:03/01/22 17:56

/* usage: 入力ファイル名 出力ファイル名 を引数で与える。*/
int main(int argc, char *argv[])
{
FILE *fi, *fo;
int i;
struct student *sp[MAXSTUDENT];

if(argc != 3) exit(1);
fi = fopen(argv[1], "r");
if(!fi) exit(1);
fo = fopen(argv[2], "w");
if(!fo) exit(1);
for( i=0; i<MAXSTUDENT; i++){
fgets( buf, BUFSIZE, fi);
if( feof(fi) ) break;
sp[i] = (struct student *)malloc(sizeof(struct sudent));
if(!sp[i]) exit(1);
sscanf( buf, "%s %s %d %d",
sp[i]->name, sp[i]->yomi, &(sp[i]->a), &(sp[i]->b));
sp[i]->sum = sp[i]->a + sp[i]->b;
}
fclose(fi);
/* iは読み込めた人数になってる */
myfprint( fo, i, sp, "入力順のデータ");
yomisort( i, sp);
myfprint( fo, i, sp, "名前の読みの五十音順");
sumsort( i, sp);
myfprint( fo, i, sp, "2科目の平均点の降順");
fclose(fo);
}

449 :デフォルトの名無しさん:03/01/22 17:57
int yomisort( int n, struct student *sp[]){
struct student *dmy;
int i, j;
for(i=0, i<n, i++){
for(j=n-1; j>=i; j--){
if( strcmp( sp[j]->yomi, sp[j+1]->yomi) > 0){
dmy = sp[j], sp[j] = sp[j+1], sp[j+1] = dmy;
}
}
}
return 0;
}

int sumsort( int n, struct student *sp[]){
struct student *dmy;
int i, j;
for(i=0, i<n, i++){
for(j=n-1; j>=i; j--){
if( sp[j]->sum < sp[j+1]->sum){
dmy = sp[j], sp[j] = sp[j+1], sp[j+1] = dmy;
}
}
}
return 0;
}


450 :C++なんかワカンネ440:03/01/22 17:58
int myfprint( FILE *fp, int ninzuu, struct student *sp[], char *title)
{
int i;
fprintf(fp, "%s\n", title);
for(i=0; i<ninzuu; i++){
fprintf(fp, "%s\t%s\t%d\t%d\n", sp[i]->name, sp[i]->yomi, sp[i]->a, sp[i]->b);
}
return 0;
}

ここまで。


451 :C++なんかワカンネ440:03/01/22 18:05
問題点
・C++じゃない。
・全角文字のソートが激しく不安。
・エラー処理がいい加減。入力ファイルによっては暴走するかも。
あとは皆さんの力で。

# 鯖重いなあ、、、

452 :毒狂大生:03/01/22 18:08
サンクスです、今のところ全然分かりませんが、なんとか解析して参考にしたいと思います

453 :デフォルトの名無しさん:03/01/22 18:25
>>445
そのプログラムが基本的に「数値を読み込み, 次に実行する機能を指定する文字を
読み込み, 指定された機能を数値の回数だけ実行する」という動作をしていること
はわかる?"150R"を読み込んだらright_turnを150回実行するという様に。
読み込んだ数値はrepeat_countにセットされるから,

for (i = 0; i < repeat_count; i++)

は解説不要だと思う。ここで,

if (repeat_count < 0) repeat_count = 1;

は, "R"のように数値を指定せず機能だけを指定された場合, repeat_countは
初期値の-1になっているから, そのような場合に, 指定の機能を1回だけ実行
させるために設けられている。つまり"R"と"1R"は等価となる。

454 :毒狂大生:03/01/22 18:29
サブ(rei12sub.cpp)

int sum(int array[],int n)
{
int i,total=0;
for(i=0; i<n; i++) total+=array[i];
return(total);
}

メイン
#include<iostream.h>
#include “rei12sub.cpp”
void main(void)
{
int data[10],i;
cout<<”整数を10個入力しなさい “;
for(i=0; i<10; i++) cin>>data[i];
cout<<”10個の整数の合計は “<<sum(data,10)<<” です。” <<endl;
}  

これを参考に
実数のn個の一次元配列を実数の大きさの順に並べ替えるサブプログラム
(void sort(float array[],int n))
を作り、試してみよ。
って問題なんですけどどうやればいいのでしょうか?
検討つかないっす(汗

455 :しつこくてスマソ:03/01/22 18:31
>>453
丁寧な解説ありがとうございます!!

456 :デフォルトの名無しさん:03/01/22 18:34
$ cd c:\\recycled

457 :デフォルトの名無しさん:03/01/22 18:46
>>454
#include “rei12sub.cpp”
これって教師が書いたの?
こんなやり方するくらいなら別ファイルにしない方がマシなような。

/* 大きい順に並べる。最も単純なバブルソートを用いる。 */
void sort(float array[], int n)
{
 int i, j;
 float temp;
 for (i=0; i<n-1; i++)
  for (j=0; j<n-i-1; j++)
   if (array[j] < array[j+1]) {
    temp = array[j];
    array[j] = array[j+1];
    array[j+1] = temp;
   }
}



458 :毒狂大生:03/01/22 18:49
サンクスです、解析してみます〜
教師が書いたやつです。詳しいテキストは上〜のほうに張ってあります。

459 :デフォルトの名無しさん:03/01/22 23:31
すいません。ちょっとわからないんです。
関数の問題で副作用で値を返すってあったんですが…
副作用って関数の中でmainから与えられた引数の
内容を変えられるってことでいいんでしょうか??

460 :デフォルトの名無しさん:03/01/22 23:53
>>459
そういう意味で言ってるんだと思うよ。

461 :デフォルトの名無しさん:03/01/22 23:54
>>459
まずmain()からで無くても意味は同じ
次にCかC++によって意味が変わる
Cであれば、引数はポインタで、そのポインタが指す先が変更される
C++であれば、Cと同じか、引数そのものが変更される

462 :デフォルトの名無しさん:03/01/22 23:55
>>460
わかりました。
ありがとうございます

463 :デフォルトの名無しさん:03/01/23 00:02
>>462
詳しい解説ありがとうございます
何となくだったのがちゃんとわかってスッキリしました(^^)

464 :デフォルトの名無しさん:03/01/23 00:43
文字配列の問題でわかんないところがあるんで教えて下さい
char buf[100]; と宣言した配列に
gets(buf)
でキーボードから文字列を入力して受取り、
その後別の配列で
char word[100]; 
にstrcpyのように文字列全てではなくて
一文字ずつ文字を写すにはどのようにすればいいでしょうか?

465 :デフォルトの名無しさん:03/01/23 00:46
>>464
while使って一文字ずつ代入

466 :デフォルトの名無しさん:03/01/23 00:48
>>459-463
厳密には、それだけではない。
関数内で、グローバル変数を変更するとか、関数内の静的変数を変更する等も、副作用の一種です。
また、printf() で画面等に表示するとか、fgets() でキーボードから入力するのも副作用です。

要は、関数において値を返す以外のことは全て「副作用」です。

467 :デフォルトの名無しさん:03/01/23 01:04
>>465
その場合
while(buf!='\0'){
にするとして、代入はどういうふうにすればできますか?
ポインタ使ってやるんでしょうか…?
char *sp;
sp=buf; を宣言して
word[]=sp;
ってかんじですか?

468 :デフォルトの名無しさん:03/01/23 01:09
>>464
i=-1;
do{
  i++;
  word[i]=buf[i];
}while( buf[i] =! '\0' );

469 :デフォルトの名無しさん:03/01/23 01:11
×  =!
○  !=

470 :デフォルトの名無しさん:03/01/23 01:28
>>467
>>468のやり方もしくは,

for (i=0; buf[i]!='\0'; i++)
 word[i]=buf[i];
word[i]=buf[i];

だな。0オリジンじゃないと気持ち悪い性格なので俺ならこれで書く。

471 :デフォルトの名無しさん:03/01/23 01:33
>>470 それなら
for(i=0;word[i]=buf[i];i++);/* for(i=0;(word[i]=buf[i])!=0;i++); */

472 :デフォルトの名無しさん:03/01/23 01:36
>>468
>>470
いろんな方法があるんですね〜。
でもこんなにすぐ思いつくなんてはすごいですね
同じような形でポインタ使ってもできますか?

473 :デフォルトの名無しさん:03/01/23 01:37
>>471
おおそれだ。

474 :デフォルトの名無しさん:03/01/23 01:40
char *dp=word,*sp=buf;
while(*dp++=*sp++);

475 :レゴ:03/01/23 04:26
質問しても良いですか?
C++の実行結果をテキストに出力するやり方なんですけど。

476 :レゴ:03/01/23 04:31
誰も居ない様なので、失礼します。

477 :デフォルトの名無しさん:03/01/23 04:35
さっさとC++相談室に行くかあきらめて寝ろよ

478 :デフォルトの名無しさん:03/01/23 04:54
475 から 476 まで、その間およそ 5 分。

479 :デフォルトの名無しさん:03/01/23 06:58
>>464>>474のようなことをする道具がstrcpyなわけです。

480 :とけますか?:03/01/23 12:30
下記のコードのコンパイルが通るように、新たにコードを追加せよ。
既存の行を変更してはいけない。

class Niwatori {
public:
void f(Tamago* gocchi) {}
};

class Tamago {
public:
void f(Niwatori* toricchi) {}
};

int main() {
return 0;
}


481 :デフォルトの名無しさん:03/01/23 12:47
asage

482 :デフォルトの名無しさん:03/01/23 12:52
/*
class Niwatori {
public:
void f(Tamago* gocchi) {}
};

class Tamago {
public:
void f(Niwatori* toricchi) {}
};
*/

int main() {
return 0;
}


483 :デフォルトの名無しさん:03/01/23 13:16
ワラタ

484 :デフォルトの名無しさん:03/01/23 13:31
>>480
class Tamago;
という前方宣言を付ければ通る。

485 :デフォルトの名無しさん:03/01/23 13:51
template< class Tamago >
class Niwatori {
public:
void f(Tamago* gocchi) {}
};

template< class Niwatori >
class Tamago {
public:
void f(Niwatori* toricchi) {}
};

int main() {
return 0;
}

486 :デフォルトの名無しさん:03/01/23 14:06
>>485
感心シマスタ。

487 :デフォルトの名無しさん:03/01/23 14:37
でも、482 が最も模範的な回答の気がする。
つーか、実際そうしないか?

488 :獨協C++:03/01/23 17:12
ガーン

同じ大学のヤシに先越されたYO!
漏れはぜんぜんわからない〜

440さんはもう一度来ないかな・・・


489 :デフォルトの名無しさん:03/01/23 17:14
>>488
という事は、全く同一のプログラムを提出したくはないと?

490 :獨協C++:03/01/23 17:16
>>489

そうなんです。
おばちゃん教授とはいえ、その変のチェック厳しいんですよ〜


491 :デフォルトの名無しさん:03/01/23 17:17
>>490
ちょっと前レス見てみたけど、課題が簡単だから、どちらにしろよく
似たような解答になると思うよ。

492 :獨協C++:03/01/23 17:18
>>491

そうですか。
前回の課題は自力で何とかなったので、
もう少しがんばってみます。



493 :デフォルトの名無しさん:03/01/23 17:22
>>492
俺もC++勉強用に書いてみる。出来たら貼るから。

494 :デフォルトの名無しさん:03/01/23 17:26
>>492
この2002年度最終問題って奴か?提出明日じゃん。

495 :毒狂大生:03/01/23 17:31
>>獨協C++
あの少ない人数の中に漏れ以外に2chに張るやつがいたとは(藁

課題は知り合いのプログラマーに解いてもらって突破した
あんなの自力じゃ無理だ(汗
ちなみに去年の過去問題手に入れたけど、そっちは恐ろしく簡単だぞ

496 :デフォルトの名無しさん:03/01/23 17:32
まぁアレだ、2chに入り浸る暇があるなら勉強しろと

497 :獨協C++:03/01/23 17:33
>>495

おぉ、毒協大生タソ降臨!

そうなんだよね。
うちは文系学部(大学)だし、漏れの周りはほぼ全滅。

あのおばさんも説明の仕方わるいしね。


498 :毒狂大生:03/01/23 17:36
あの婆さんは何いってるか不明だよな
ちなみに去年の問題は整数をいくつか入れて合計と平均を表示するプログラムがあって、それの説明
もう一個は最小値を求めるサブプログラムの説明と穴埋め

課題とは裏腹にテスト問題はかなり簡単みたい

あとはfloatとかshort int,long int、文字列の扱いについての説明が出てるね

499 :デフォルトの名無しさん:03/01/23 17:37
>>497-498
ちくってやる(W

500 :獨協C++:03/01/23 17:39
>>498

おーすげぇ〜
テスト問題の方が簡単だー

果たして課題は明日までにできるか不安。
しかもこれから塾講のバイトなんですよね。11時過ぎまで。
多分徹夜でつ。

あっ、そろそろ支度しないと・・・


501 :毒狂大生:03/01/23 17:40
頑張ってください、見当を祈ります。

とりあえずテストは問題28あたりまで自力でやれれば余裕でしょう

502 :獨協C++:03/01/23 17:42
>>501

がんばります。
もしかしたら、あした提出してるのは毒狂タンだけかも(w



503 :毒狂大生:03/01/23 17:43
提出したらバレてしまうなw
ちなみに、まるっきり全部やってもらったわけじゃなく、隣で教えてもらってやったから問題ないかな
説明しろって言われるとツライが

504 :デフォルトの名無しさん:03/01/23 17:53
雑談なら他所いけ

505 :デフォルトの名無しさん:03/01/23 17:58
2人だけの世界に入りました。

506 :デフォルトの名無しさん:03/01/23 18:12
いま二人は指輪を選んでます。

507 :デフォルトの名無しさん:03/01/23 18:21
仲人は誰?

508 :デフォルトの名無しさん:03/01/23 18:43
>>1

509 :デフォルトの名無しさん:03/01/23 19:01
文字列でわかんないトコがあるので質問してもいいですか?
空行を入力するまで文字列の入力を繰り返すのに
while(*(sp=gets(buf)))
を使うのですがどう働いてるのかわからない。
gets(buf)でchar buf[100];
に文字列を渡してるのだと思うんですけど
char *spはどう働いてるんでしょうか?
lineの先頭アドレスをもらうってことかと思ったんですけど
だとしたら「*」は何を表すんでしょう…

510 :毒狂大生:03/01/23 19:13
>>502
漏れは教えてもらいながらやったやつがあるから、404氏がやったやつを使っても問題ないかと

511 :デフォルトの名無しさん:03/01/23 19:15
>>509
「〜の内容」
つまりbuf[0]の中身

512 :デフォルトの名無しさん:03/01/23 19:27
>>511
そっか。buf[0]の中身があればループするってことですね。
ありがとうございました。

あともう一つだけ聞いてもいいですか…?
while(*(sp=gets(line)))で文字列をchar buf[100]にいれて
ループを出たらprintfで出力しなきゃいけないんですが
printf("%s",buf);だと文字列が何も表示されないんです。
%cだと文字が変わっちゃうし…。
どうすればいいでしょう?

513 :デフォルトの名無しさん:03/01/23 19:35
>>512

>while(*(sp=gets(line)))で文字列をchar buf[100]にいれて
gets(line)でbufに入力文字列が入るワケがない。

>ループを出たら〜〜文字列が何も表示されないんです
エンターだけ入力した時にループ終了だから表示されるワケがない。

もしかして、釣られた・・・のか?

514 :デフォルトの名無しさん:03/01/23 19:47
>>513
あっ!ごめんなさい。間違えました…
while(*(sp=gets(buf)))です。

そっか。whileの中で表示させればよかったんですよね。
ループ終わったら表示させることしか考えてなかった(・・;)

515 :山崎渉:03/01/23 19:59
(^^)

516 :デフォルトの名無しさん:03/01/23 23:24
>>514
つか本当に
while(*(sp=gets(buf)))
なんてやっていいのか?
空行が出てくる前にファイルが終了に到達したらどうなるんだ?

あと、bufに確保している以上の文字数がある行が出てきたらどうなんだ?
という問題もあるがなあ。getsは過去のコードとの互換性を保つためだけに
ある関数で、使っちゃいかんぞ。

517 :デフォルトの名無しさん:03/01/23 23:24
【ネットボランティア】余ったCPUを・・・
 cell computingとは、ブロードバンドに接続された家庭内
や企業内のPCの余剰CPUパワーを統合し、
仮想的なスーパーコンピュータとしての利用を実現する
技術を用いたSI、ネットワークサービスです。
 バイオ、物理計算、設計、金融工学、CGレンダリング
などの分野のお客様へ、安価に仮想スーパー
コンピュータパワーを提供することを目的としております。
 なお、将来的には収益にあわせてCPUパワーを提供し
てくださる参加者へポイントシステムやデジタルコンテンツ
による利益還元を考えております。
http://www2.cellcomputing.jp/

2ちゃんねるのチームあります。【おまえらのPCで挑戦しる】
http://members.cellcomputing.jp/services/teams/team.htm?id=ABBE425B-CE11-4DA4-8591-C68DF67DA41A

518 :デフォルトの名無しさん:03/01/24 00:17
>>517
IP抜かれるとか無いんだろうか?

519 :デフォルトの名無しさん:03/01/24 01:39
サイトにアクセスした時点でリモートホストが伝わっているわけだが。

520 :デフォルトの名無しさん:03/01/24 02:09
「ボランティア」って言葉がなんとなく胡散臭い感じがする。
それにやってることは白血病の解析の二番煎じだしね。

521 :デフォルトの名無しさん:03/01/24 09:45
IPを知られる事が問題なんではなく、無関係なデータを収集されたりせんかというのが

522 :デフォルトの名無しさん:03/01/24 10:15
トロイとか入ってたりな

523 :デフォルトの名無しさん:03/01/24 10:38
宿題 : 同期・非同期の意味と違いを答えなさい。だって。
いみふめーだな。

524 :デフォルトの名無しさん:03/01/24 11:09
どこが意味不明?

525 :デフォルトの名無しさん:03/01/24 11:16
523のレスが意味不明

526 :デフォルトの名無しさん:03/01/24 13:39
同期: 同じ時期に同じ職場等に就いた人のこと。
非同期: 同期ではない人のこと。

527 :デフォルトの名無しさん:03/01/24 14:35
同期: セクース
非同期: オナーニ

528 :デフォルトの名無しさん:03/01/24 21:16
セクースなど実際には同期が取れてない罠

529 :デフォルトの名無しさん:03/01/24 23:49
>>528
同期を取るためにプロセス間通信を利用します。
「いっていい?」
「まだ」
「いくいくいっしょに〜」

530 :デフォルトの名無しさん:03/01/25 02:46
同期を取るのに失敗しがちなわけですが・・・

531 :デフォルトの名無しさん:03/01/25 07:58
週末だから宿題が無いのか・・・

532 :デフォルトの名無しさん:03/01/25 08:06
無いものはないのにあるものはある。
右手はどっち?

533 :デフォルトの名無しさん:03/01/25 16:53
getsを使い文字列を入力して
大文字の数、小文字の数、数字の数、空白の数、その他の文字数
をそれぞれ求めるプログラムをつくりたいのですが
どうしたらいいでしょうかお願いします。


534 :デフォルトの名無しさん:03/01/25 17:10
>>533
まずはgetsを使わないようにするところから始めよう!

535 :533:03/01/25 17:13
getsはだめなんですか?

536 :デフォルトの名無しさん:03/01/25 18:23
>>535
だめ。getsは互換性のためだけにある関数で、
使っちゃいけない。

537 :デフォルトの名無しさん:03/01/25 18:51
宿題です。お願いします。
すべての組み合わせのパターンを表示するプログラムを
作りたいのですが、どうすればいいですか?

例えば、下記のような値が与えられたときは
A0, A1
B0, B1
C0, C1
D0, D1, D2

下記のような組み合わせをすべて出力できるようにしたいのですが
どうすればいいのでしょうか?表示の順序にはこだわりません。
すべてのパターンを表示していただければどんな順序でもかまいません。
[A0, B0, C0, D0]
[A0, B1, C0, D0]
[A0, B0, C1, D0]
[A0, B0, C0, D1]
    ・
    ・
    ・
[A1, B1, C1, D2]

538 :デフォルトの名無しさん:03/01/25 19:15
>>537
#include <stdio.h>

static const char *A[] = {"A0", "A1"};
static const char *B[] = {"B0", "B1"};
static const char *C[] = {"C0", "C1"};
static const char *D[] = {"D0", "D1", "D2"};

int main()
{
 for(int iA = 0; iA < sizeof(A)/sizeof(A[0]); iA++){
  for(int iB = 0; iB < sizeof(B)/sizeof(B[0]); iB++){
   for(int iC = 0; iC < sizeof(C)/sizeof(C[0]); iC++){
    for(int iD = 0; iD < sizeof(D)/sizeof(D[0]); iD++){
     printf("[%s,%s,%s,%s]\n", A[iA], B[iB], C[iC], D[iD]);
    }
   }
  }
 }
 return 0;
}

539 :デフォルトの名無しさん:03/01/25 19:28
>>535
宿題スレってことは学校でgets教えてるってことか。
デタラメ教えやがって。

540 :デフォルトの名無しさん:03/01/25 19:49
>getsは互換性のためだけにある関数
とは、どういう意味ですか?

541 :デフォルトの名無しさん:03/01/25 20:05
>>537
ちょっと遅くなりましたができたのでアップしておきます。
どなたかこのプログラムをもっとすっきりした形にして下さい。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Atom {
char atom[10][10];
int n;
};

void printall(struct Atom *, int, int, int *);

int main(void)
{
FILE *fi;
char buf[128], *p;
struct Atom a[10];
int i, j = 0, m, cue[10];

if ((fi = fopen("combi.txt", "r")) == NULL) exit(1);
while (fgets(buf, 128, fi)) {
int i = 0;
p = strtok(buf, ", \n");
strcpy(a[j].atom[i++], p);
while (p = strtok(NULL, ", \n"))
strcpy(a[j].atom[i++], p);
a[j++].n = i;
}

542 :デフォルトの名無しさん:03/01/25 20:06
printall(a, j, 0, cue);

return 0;
}

void printall(struct Atom *a, int m, int n, int *cue)
{
int i, j;

for (i = 0; i < a[n].n; i++) {
if (m - 1 == n) {
printf("[");
for (j = 0; j < m; j++) {
if (j == m - 1)
printf("%s", a[j].atom[i]);
else
printf("%s", a[j].atom[cue[j]]);
if (j != m - 1) printf(", ");
}
printf("]\n");
} else {
cue[n] = i;
printall(a, m, n + 1, cue);
}
}
}

543 :デフォルトの名無しさん:03/01/25 20:21
printall()関数を整理してみた。

void printall(struct Atom *a, int m, int n, int *cue)
{
int i, j;

for (i = 0; i < a[n].n; i++) {
if (m - 1 == n) {
printf("[");
for (j = 0; j < m; j++)
if (j == m - 1)
printf("%s]\n", a[j].atom[i]);
else
printf("%s, ", a[j].atom[cue[j]]);
} else {
cue[n] = i;
printall(a, m, n + 1, cue);
}
}
}

544 :デフォルトの名無しさん:03/01/25 20:30
strtokって、いくつも1度に指定できるんですね。
(','と' 'と'\n')

545 :537:03/01/25 20:32
回答早いですね。
もう出来ているとは・・・
どうも有難う御座いました。

546 :デフォルトの名無しさん:03/01/25 20:36
>>544
一度にいくつも指定できないと、わざわざstrtok()を使う意味がない。

547 :デフォルトの名無しさん:03/01/25 20:41
>>533
gets 使うことは全然問題ないよ、気にしない方がいいよ。
ただ、バッファのサイズには気をつけてね。


#include <stdio.h>

#define BUFSIZ 256  // 最大文字入力数+1
char buf[BUFSIZ];
int i, upper, lower, degit, space, other;

gets(buf);
upper = lower = degit = space = other = 0;
for (i = 0; buf[i]; ++i) {
 if (buf[i] >= 'A' && buf[i] <= 'Z')
  ++upper;
 else if (buf[i] >= 'a' && buf[i] <= 'z')
  ++lower;
 else if (buf[i] >= '0' && buf[i] <= '9')
  ++degit;
 else if (buf[i] == '_')
  ++space;
 else
  ++other;
}
printf("upper=%d, lower=%d, degit=%d, space=%d, other=%d\n",
 upper, lower, degit, sapce, other);


548 :デフォルトの名無しさん:03/01/25 20:41
void printall(struct Atom *a, int m, int n, int *cue)
{
int i, j;

for(i=0; i<a[n].n; i++) {
if(m-1==n) {
printf("[");
for(j=0; j<m-1; j++)
printf("%s, ", a[j].atom[cue[j]]);
printf("%s]\n", a[j].atom[i]);
}else{
cue[n] = i;
printall(a, m, n + 1, cue);
}
}
}


549 :デフォルトの名無しさん:03/01/25 20:47
>>533
isdigit,islower,isupperなどは使え無いの?

550 :デフォルトの名無しさん:03/01/25 20:48
age

551 :デフォルトの名無しさん:03/01/25 20:48
>>540
今ではgetsは使ってはいけない。
しかし、昔の規格にgetsが入っているため、仕方なく残してある。
getsは意味のあるタブーなのだよ。

552 :デフォルトの名無しさん:03/01/25 20:49
宿題です。全然分かりません。お願いします。

1文字を正方形の区画と考えて、与えられた図形を
2分割(裏返しも考慮)するプログラムを作成しなさい。
(注:'-'は実際は空白文字です)

例題:
*******
*******
**----*
**----*
****--*
****--*
------*
------*

回答:
#######
#++++++
#+----+
#+----+
#++#--+
####--+
------+
------+


553 :デフォルトの名無しさん:03/01/25 20:53
>>547
getsには問題おおありだろ。
バッファのサイズに気をつけてって問題点までちゃんと認識してるじゃねえか。
外から読むときは、すべからく予想外のものがくることを想定すべきだ。
getsのバッファオーバーフローなんかその典型でちょっと気をつければ
防げることじゃないか。

あとなんでctype.hのマクロ群を使わないんだ?
事実上ASCIIだけだからそのコードでもさほど問題ないだろうけど、
移植性に問題あるぞ。それに、普通ctype.hのマクロのほうが速いし、
意図が明確になるし。

554 :デフォルトの名無しさん:03/01/25 20:54
何が分からないの?答え出ているじゃん

555 :デフォルトの名無しさん:03/01/25 20:54
>>552 例題の意味が俺には分からんぶぁい。
あと、CかC++か指定しる!

556 :デフォルトの名無しさん:03/01/25 21:04
>>553
>getsのバッファオーバーフローなんかその典型でちょっと気をつければ
>防げることじゃないか。

だから問題ないんでしょ。
宿題ごときに、何ムキになってんの?


557 :デフォルトの名無しさん:03/01/25 21:06
訂正
宿題→宿題レベル

558 :552:03/01/25 21:06
>>555
図形を2分割

図形を同じ形に2分割

に訂正です。すみません。レプタイルという問題だそうです。

あと、C言語でおながいします。

559 :デフォルトの名無しさん:03/01/25 21:08
*が3列あったらどうすんお?

560 :デフォルトの名無しさん:03/01/25 21:09
>>556
宿題だからこそムキになってる。
こういうのは早いうちから癖つけとかんと。

561 :デフォルトの名無しさん:03/01/25 21:09
コンパイル中...
BlockArray.cpp
Microsoft Visual Studio\LeadBall\BlockArray.cpp(49) : error C2065: 'BLOCK_STOCKRECT' : 定義されていない識別子です。
Microsoft Visual Studio\LeadBall\BlockArray.cpp(49) : error C2109: 配列または、ポインタでない変数に添字が使われました。
Microsoft Visual Studio\LeadBall\BlockArray.cpp(49) : error C2664: 'SetRect' : 1 番目の引数を 'int' から 'const class CRect &' に変換できません。 (新しい機能 ; ヘルプを参照)
理由: 'int' から 'const class CRect' へは変換できません。
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。
cl.exe の実行エラー

LeadBall.exe - エラー 3、警告 0

くだらない質問で申し訳ないんですが、
誰か上の意味を教えてください。


562 :デフォルトの名無しさん:03/01/25 21:11
コンパイル中...
BlockArray.cpp
Microsoft Visual Studio\LeadBall\BlockArray.cpp(49) : error C2065: 'BLOCK_STOCKRECT' : 定義されていない識別子です。
Microsoft Visual Studio\LeadBall\BlockArray.cpp(49) : error C2109: 配列または、ポインタでない変数に添字が使われました。
Microsoft Visual Studio\LeadBall\BlockArray.cpp(49) : ぬるぽ C2664: 'SetRect' : 1 番目の引数を 'int' から 'const class CRect &' に変換できません。 (新しい機能 ; ヘルプを参照)
理由: 'int' から 'const class CRect' へは変換できません。
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。
cl.exe の実行エラー

LeadBall.exe - エラー 2、警告 0、ぬるぽ1

563 :デフォルトの名無しさん:03/01/25 21:13
>>553
こいつ、移植性に問題あるって指摘しておきなが、
getsのこと否定してやがる。支離滅裂。

あと、ctype.h がない、C言語のこと知らないんだ。
そういう意味で ctype.h は移植性に問題あるんだけどな。
そのころの習慣で、ctype.h を使わないプログラマーがいるんだろうな。


564 :デフォルトの名無しさん:03/01/25 21:13
>560
それでダメダメしか言わないんじゃな。素直に疑問に答えてやればいいのに

565 :デフォルトの名無しさん:03/01/25 21:16
>>560
gets使わず何使うの?
まず、それに答えなさいよ。
scanf?ぷっ

566 :デフォルトの名無しさん:03/01/25 21:16
>>563
何で移植性に問題ある? gets使わなくても移植性のあるコードかけるだろ。
昔のコードにgets使ってるコードがあるから仕方なく規格に入ってるだけ。

んで、ctype.hがないC処理系なんて前提にしてるの?
そういうレベルなら、getsだって使えない処理系あるぞ。
それどころか、エントリーポイントがmainじゃない処理系だってあるんだがな。
スタックがない処理系だの、大文字しか使えない処理系だの。
そういうレベルの話なのか?

567 :552:03/01/25 21:19
他の図形も考えられます。

****
****

##++
##++

とか。複数考えられるときはそのうちの1種類だけできればいいそうです。
また、分割できない時はその旨のメッセージを表示すればいいです。

>>559
すみません、意味が分かりません。

568 :547:03/01/25 21:20
>>547です。
仕事でコード書くときにには、is系使いますよ。
それと、gets の代わりに、fgets の stdin ですかね。
でもそういう問題じゃないと思ったんで。
単に質問に答えただけですから、すみません。

569 :デフォルトの名無しさん:03/01/25 21:21
>>565
普通fgetsだろう。
じゃあ書いてやるから少し待て。

570 :555:03/01/25 21:22
>>567
なんとなく分かって来たべ。やってみる。
直感的なんだけど、うまく分割できる図形ってのは、かなり限られてるんじゃねーか?

571 :デフォルトの名無しさん:03/01/25 21:24
>>563
> あと、ctype.h がない、C言語のこと知らないんだ。

せめて ANSI ぐらいは、想定しようよ。
>>566 も書いてるけど、極論し出すとキリないぞ。

572 :デフォルトの名無しさん:03/01/25 21:24
名無しさん   2003/01/24(Fri) 20:07

 以下の要項で小学校を襲撃します?
 場所:大田区立梅田小学校
 とき:平成15年1月27日(月曜日)

http://www.megabbs.com/cgi-bin/readres.cgi?bo=lobby&vi=1043406471&rm=50

こいつは通報します

573 :デフォルトの名無しさん:03/01/25 21:24
>WINDOUS98
禿藁 age

574 :デフォルトの名無しさん:03/01/25 21:27
>>532
今はじめて気が付いたんだけど、
左と右ってエロだね。

575 :デフォルトの名無しさん:03/01/25 21:30
>>571
そしたら gets も問題ないわけで、
gets だけ問題するのはおかしいという意味ですよ。

576 :デフォルトの名無しさん:03/01/25 21:31
>>575
getsは移植性が問題なんじゃなくて、バッファ溢れを防げないことが問題なんでしょ。

577 :デフォルトの名無しさん:03/01/25 21:38
>>576
そのことは、最初から >>547さんは書いてるし、
あと >>568 の発言もある。
どうもいちゃもん付けてるだけとしか思えないんだけどね。


578 :569:03/01/25 21:40
>>575
たしかにANSIだけを考えてると問題ないかもしらん。
が、getsは使うべきじゃないだろう。
んで、こんな感じ。散々言っといて移植性やらバッファオーバーフローやらに
問題あったらどうしよう(w
#include <stdio.h>
#include <ctype.h>
#define BUFSIZE 256 // 最大文字入力数+1
int main(void) {
  char buf[BUFSIZE];
  int i, c, upper, lower, degit, space, other;
  upper = lower = degit = space = other = 0;
  while (fgets(buf, sizeof(buf), stdin)) {
    for (i = 0; (c = buf[i]) != '\0' && c != '\n'; ++i) {
      if (isupper(c))
        ++upper;
      else if (islower(c))
        ++lower;
      else if (isdigit(c))
        ++degit;
      else if (c == ' ')
        ++space;
      else
        ++other;
    }
  }
  printf("upper=%d, lower=%d, degit=%d, space=%d, other=%d\n",
         upper, lower, degit, space, other);
  return 0;
}


579 :デフォルトの名無しさん:03/01/25 21:43
綴りの間違いに気づけよっ
と、変なところを突っ込んでみる。

580 :デフォルトの名無しさん:03/01/25 21:44
>>578の c != '\n'っていいのか?

581 :デフォルトの名無しさん:03/01/25 21:46
>>578
>>533の言う空白が' 'だけでなく改行や復帰なども含まれるのならc==' 'じゃなくてisspace(c)じゃないか?


582 :デフォルトの名無しさん:03/01/25 21:57
>>569
一連の流れ見る限り、好感度悪いっす。

583 :デフォルトの名無しさん:03/01/25 21:57
>>577
> そのことは、最初から >>547さんは書いてるし、

でも、バッファサイズ問題は最終的にはどうしようもないからねぇ。
(>>547 の BUFSIZ をいくつにしてもあふれる時は、あふれるからね。)

> あと >>568 の発言もある。

自分が (仕事とは言え) isxxx() とか fgets() 使いながら...

> gets 使うことは全然問題ないよ、気にしない方がいいよ。
> ただ、バッファのサイズには気をつけてね。

と言うのは、ちょっとなんだかなぁと言う感じがしなくもない。

>>579
isdigit() って書いてるのにねぇ...。

584 :デフォルトの名無しさん:03/01/25 22:00
>>578
で、256文字以上入力された場合はそれでいいの。
それなら、そんなに大騒ぎせんでもって感じ。(www

585 :デフォルトの名無しさん:03/01/25 22:06
>>583
> gets 使うことは全然問題ないよ、気にしない方がいいよ。
> ただ、バッファのサイズには気をつけてね。

バッファーフローの問題以外は、問題ないよって意味にとれましたが。
そもそも質問にはgets使ってあるんだから、問題があるなら出題する方だと思います。

586 :デフォルトの名無しさん:03/01/25 22:07
出題する方っていうのは、質問した人じゃなくて、その人の出題した人という意味。
けど、K&R本も問題ありということになるよ。

587 :デフォルトの名無しさん:03/01/25 22:10
gets使うと、実行時にも警告メッセージがどんどこ出てきて、
まともに入出力できないから、だめぽ。

588 :デフォルトの名無しさん:03/01/25 22:25
ここは宿題スレのはずだったのだが・・・

589 :555:03/01/25 22:34
>>588 禿胴。
さて、>>552の問題やってる人、いる?

590 :デフォルトの名無しさん:03/01/25 22:38
だって、これ難しいよ。
宿題のレベル超えてねぇか。


591 :デフォルトの名無しさん:03/01/25 22:42
どうやって解こうかなあ、と頭のなかで色々いじくってみてる。
実装するの大変そうな案ばかり。

592 :デフォルトの名無しさん:03/01/25 22:44
問題と例題と回答からなにをすればいいのかわからん・・・

593 :592:03/01/25 22:45
あ、なんとなくわかったような・・・
+はなにを表しているんだろ

594 :592:03/01/25 22:51
+は空白になった部分ね。

595 :555:03/01/25 22:58
>>590-593 とりあえず、漏れの書きかけの流れ。

1. 問題の図形を c[][]にセット。
2. if(cの面積が奇数) nomatch→exit。
3. cに含まれて、かつ面積が半分な図形aをつくってみる
4. aが連続な多角形になってるか(2つの島に分かれたりしてないか)チェック。
5. b=c-aがaと合同かどうか、回したり裏返したりしてチェック。

こんなんでどうよ?総当たり的な要素が満載ですがw

>>594 ちがうぞ!
解答の#と+が合同になるようにしる!って事だべ。

596 :デフォルトの名無しさん:03/01/25 22:59
例題:
*******
*******
**----*
**----*
****--*
****--*
------*
------*

回答:
#######
#$$$$$$
#$----$
#$----$
#$$#--$
####--$
------$
------$

'#','$'で、出来た図形が'同じ'なんだろ。
しっかりしと。

597 :デフォルトの名無しさん:03/01/25 23:05
>>595-596

合同になるようにってのは分かったけど、分割した片方は消すのかと思った(先入観)。
難しいねぇ〜

598 :デフォルトの名無しさん:03/01/25 23:09
なんだ*のまま操作というか、単位図形の集まりとして表現すると、
島になってないかどうかとかいうチェックが入りそうな。
そうじゃなくて境界線で表現して、分割線を入れてみるという線はどうだろう。

599 :デフォルトの名無しさん:03/01/25 23:13
>>597
分割した片方を消しても、元の画像と
分割後の画像の差分で簡単に取り出せる
難しいのは、効率良く合同な図形に分ける事

600 :デフォルトの名無しさん:03/01/25 23:16
学校の宿題なんですが、全然わからなくて困っています・・よろしくお願いしますm(_ _)m
↓が問題文です
CPUのシミュレータ
CPUの動作を模擬するプログラムを書いてみよう。
CPUは、命令をメモリから取り出し、その命令に基づいた動作をする。
動作は例えばメモリからデータを読み出してCPU内のレジスタにコピーしたり、加減乗除演算をしたりする。
この一連の動きを真似るプログラムを書く。
CPUは、原則としては何でも構わないが、広く使われるIntelのPentium系のCPUは動作が非常に複雑なので、比較的簡単な、実験Iで用いるプロセッサがよいだろう。
動作の検証には、簡単なプログラムをメモリ上に用意し、それを1ステップごとに実行した結果を表示する。



601 :デフォルトの名無しさん:03/01/25 23:19
まず、
*の数が分割数(2)で割り切れなければ 処理は終了。

あと、どんな特徴があるんだろう。

# 文字の 縦の長さと 横の長さが違うから
# 問題の意味がよく分からんかった。

602 :デフォルトの名無しさん:03/01/25 23:21
>>600
それは、物質(CPUそのもの)はいるの?

603 :デフォルトの名無しさん:03/01/25 23:22
二つに分けた時に、回転なり裏返しなりして重なればOK!

604 :デフォルトの名無しさん:03/01/25 23:25
>>600
実験Iで用いるプロセッサってなに?
レジスタと命令セットがわからない。

605 :デフォルトの名無しさん:03/01/25 23:26
>>602
いや・・ちょっとわからないです・・m(_ _)m
ほかにも問題があるんで、どれか1つを提出すればいいんですが・・・
↓がほかの問題の1つです
図形処理(イメージの輪郭抽出)
イメージを与えられたとき、その輪郭を抽出することを考えてみよう。
まずは白黒2値で描かれたイメージの輪郭を抽出してみよう。
画像処理の教科書を見ると「輪郭抽出フィルタ」といった描き方がされているかもしれない。
更に、グレースケール(白黒の多階調)やカラーのイメージの場合についても調べて、プログラムしてみると面白いかもしれない。
更に進めて、イメージの一般的な変換(色調の変換、輪郭強調、拡大縮小回転など)を考えてもいい。



606 :555:03/01/25 23:26
>>598
それもいいかも。というか、島チェック時にそういう手法が絶対必要なのか?

>>601
それはすぐに思い付いたので、>>599で入れてるけど、
前処理でNoMatchをできるだけ洗い出したいという線で激しく同意。

>>603 激しく外出。

607 :603:03/01/25 23:27
だと思う。先走ったか

608 :デフォルトの名無しさん:03/01/25 23:31
図形の分割問題Cマガに前あったな。
いつのか忘れたが。

>>600
スタック型とかCISC,RISCの話?
エミュレータを自作しれということ?
質問が漠然としすぎ。

609 :デフォルトの名無しさん:03/01/25 23:38
1. 図形領域をの半分を取り出す。
2. それらのマスが全て隣接しているかチェック
3. 合同かチェック

1.2.3. を総当りでやる。でけんことはないけど。

610 :609:03/01/25 23:45
2. の隣接してるかのチェックは、

全てのマスを0とする。
ひとつ取り出し 1 とする。
隣接したマスを 1 すると同時に、再起呼び出し。
0 が残っていたら不連続




611 :デフォルトの名無しさん:03/01/25 23:57
1.まず座標を{x、y}の配列にする。
2.任意の一つを取り出し、選択済み配列にいれる。
3.選択済み配列内の座標とxもしくはyが同一で、他方の差の絶対値が1である座標を探し、選択済み配列に加える。
4.2.から繰り返す。

選択済み配列に全ての座標が入れば図形は連続している。

イマイチだな。

612 :デフォルトの名無しさん:03/01/26 00:00
サイズが固定なら、「合同になりえる形」 から元の図形を生成した方が楽なんじゃない?


613 :デフォルトの名無しさん:03/01/26 00:03
これ、高専の宿題なのか・・・・?

614 :555:03/01/26 00:04
>>612 その話、詳しくキボンヌ

615 :デフォルトの名無しさん:03/01/26 00:14
>>614
ごめん。何となく思いつき。
こういう問題は必ず、「分割できる元の図形」 や 「分割した後の図形」 がもつ特徴があるはずだから、
それがわかれば枝狩りできると思った。

616 :デフォルトの名無しさん:03/01/26 00:16
重心を求めるのは?
座標の端っこ(4隅?)を求めて素直に真ん中
そこから、対称的に成るものは無いか探す。

617 :609:03/01/26 00:39
分割後の領域の片側をA、もう一方をBする
分割前の領域をA+Bとする
マスの並びをM[x][y]で示すことにする。

1. 領域の分割-------------------------------
A+Bの領域のマスの個数の桁の2進数を考えるこの桁数をnとする
M[][] に何桁目かを代入しておく、マスがないところは-1
for (i = 0; i < 2^n; ++i) {
2進数表記で0と1のビットが同じかチェック
同じ場合 2. を行う
}

2. 領域が連続しているかチェック-------------
1.で用意した2進数のビットがたっている領域をAとする
領域A分のフラグのテーブルF[n]を用意して、クリアする。
領域Aのマスの一つを取り出す。
21. そのマスに該当するF[?]に1をセットする。
  21a. そのマスの上側のマスを調べて領域Aであれば21を呼び出す
  21b. そのマスの右側のマスを調べて領域Aであれば21を呼び出す
  21c. そのマスの下側のマスを調べて領域Aであれば21を呼び出す
  21d. そのマスの左側のマスを調べて領域Aであれば21を呼び出す
22. f[]のフラグが全て1なら連続だから 3. を行う

3. 領域AとBが合同かチェック----------------
ヘルプ!

注.
21a〜dではM[][]を参照してその方向にマスがあるのか、
あれば何桁目かを調べさらに領域Aであるかをチェックする
効率悪いし、領域の面積が64超えると、、、

618 :609:03/01/26 00:43
訂正!ごめんなさい。長いのに。

分割後の領域の片側をA、もう一方をBする
分割前の領域をA+Bとする
マスの並びをM[x][y]で示すことにする。

1. 領域の分割-------------------------------
A+Bの領域のマスの個数の桁の2進数を考えるこの桁数をnとする
M[ ][ ] に何桁目かを代入しておく、領域がないところは-1
for (i = 0; i < 2^n; ++i) {
 2進数表記で0と1のビットが同じかチェック
 同じ場合 2. を行う
}

2. 領域が連続しているかチェック-------------
1.で用意した2進数のビットがたっている領域をAとする
領域A分のフラグのテーブルF[n]を用意して、クリアする。
領域Aのマスの一つを取り出す。
21. そのマスに該当するF[?]に1をセットする。
  21a. そのマスの上側のマスを調べて領域Aであれば21を呼び出す
  21b. そのマスの右側のマスを調べて領域Aであれば21を呼び出す
  21c. そのマスの下側のマスを調べて領域Aであれば21を呼び出す
  21d. そのマスの左側のマスを調べて領域Aであれば21を呼び出す
22. f[]のフラグが全て1なら連続だから 3. を行う

3. 領域AとBが合同かチェック----------------
ヘルプ。

注.
21a〜dではM[ ][ ]を参照してその方向にマスがあるのか、
あれば何桁目かを調べさらに領域Aであるかをチェックする
効率悪いし、領域の面積が64超えるとね、、、

619 :デフォルトの名無しさん:03/01/26 00:52
問題の解法自体は、中学校の数学の教科書の章と章の間の
コラムにでも載ってそうな感じだね。>図形の
数学板にでも聞きに行くか。


620 :555:03/01/26 01:26
島チェックの関数、やっと書けたぶぁい。

621 :オバカさん:03/01/26 02:21
いつぞや他のスレで質問させてもらったんですが、どのスレだか忘れてしまったんで
ここで質問したいんですが、回文判定のプログラムです。
いろいろ調べてるうちに以下まではなんとかわかったんですが、
文字列入れるとエラーになってしまうんですがどうやったら
普通に動くんでしょうか? 長くてすみませんが救ってくださいませぇ。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int hantei(char s[]);
int main(void)
{
  /* ここから下の数行がおかしいと思うんですけど */
  char X;
printf("文字列を入れてください。:");
scanf("%s",X);
if(hantei("X"))
printf("Xは回文です。\n");
else
printf("Xは回文ではありません。\n");
return (0);
}
int hantei(char s[])
{
int i,j;
i=0; j=strlen(s) -1;
while(i<j && s[i]==s[j]) {
i++; j--;
}
return i>=j;
}

622 :デフォルトの名無しさん:03/01/26 02:23
char X[100]

623 :デフォルトの名無しさん:03/01/26 02:24
char X; ←これを

char X[256]; ←こんな風にする

理由はわかるよね?

624 :デフォルトの名無しさん:03/01/26 02:24
if(hantei(X))


625 :623:03/01/26 02:26
かぶった上に見落とし・・・
鬱・・・

626 :デフォルトの名無しさん:03/01/26 02:28
>>621
突っ込みどころが多すぎるが取り敢えずこんな物だろう

char X[260];
printf("文字列を入れてください。:");
scanf("%s",X);
if(hantei(X))
printf("%sは回文です。\n",X);
else
printf("%sは回文ではありません。\n",X);

627 :デフォルトの名無しさん:03/01/26 02:35
質問だがchar型の数字をint型に変換する方法ってない?

#include<stdio.h>
#include<string.h>

char filename[256];
char filetype[256];
int filenumber=0;

strcpy(filename,"test");
strcpy(filetype,".bmp");

strcat(filename,(char)filenumber);
strcat(filename,filetype);

printf("%s\n",filename);

>> test0.bmp
と出力させたい…

628 :デフォルトの名無しさん:03/01/26 02:38
>>627
sprintf("%s%d.%s", filename, filenumber, filetype);

629 :デフォルトの名無しさん:03/01/26 02:39
チゴタ
char buf[256];
...
sprintf(buf, "%s%d.%s", filename, filenumber, filetype);
printf("%s\n", buf);

630 :デフォルトの名無しさん:03/01/26 02:42
>>628
ヲイヲイ

631 :デフォルトの名無しさん:03/01/26 02:54
printf("%s%d.%s\n", filename, filenumber, filetype);
でしょ。

632 :デフォルトの名無しさん:03/01/26 03:04
>>627の文にマジレスするとatoiだと思うのは漏れだけですか?

633 :デフォルトの名無しさん:03/01/26 03:15
>>632に更にマジレスさせてもらうと、
atoi は文字列の数字をint型に変換する場合だからちょっと違うかと。

634 :デフォルトの名無しさん:03/01/26 03:18
数字を文字列に変換する関数を聞いているんじゃない?

635 :632:03/01/26 03:18
じゃあ c-'0' が正解だな。

636 :デフォルトの名無しさん:03/01/26 03:21
いえいえ (int)c です。

637 :デフォルトの名無しさん:03/01/26 03:24
>>634
>>631でいいことはわかってて、ちょっと遊んでるだけです。

638 :555:03/01/26 03:26
で、漏れは未だに>>552をやってる訳だが。

639 :デフォルトの名無しさん:03/01/26 03:29
ガンガレ!まかせた。

640 :555:03/01/26 03:33
解答者が質問者になってしまって申し訳ないが、教えれ。
C=A+BのAを生成する関数を書いてくれると助かる。

641 :デフォルトの名無しさん:03/01/26 03:36
A=C-B

642 :オバカさん:03/01/26 03:46
>>622,623,624,625さんどうもです。
特に625さんののようにやったらうまくいきました。
これで単位獲得まで15分の100から20分の100まで前進しました。
感謝しております。

643 :デフォルトの名無しさん:03/01/26 04:11
こんなんはどう?マス目の書かれた紙の上にブロックを置くイメージで。

元の図形の半分大きさの図形を順に生成 -(1)
 元の図形と重なるか順に試す -(2)
  残った領域と生成した図形が同じか順に試す -(3)
   おめでとう

{0,1} で、そのマスの上にブロックが {ない, ある} を表す。
置くときは xor すると一つのマスにブロックが重なった状態が 0 になりチェックしやすそう。

(0) 元の図形の外に面している辺の位置と長さを記録
(1) 連続した図形を作るのがめんどくさそう。これも外に面している辺の位置と長さを記録。
(2) 元の図形の外辺のどれかと生成した図形の外辺のどれかが一致する(はず)。
  辺の長さがぴったりなら(3)へ。反転と回転で最大 2x4=8 パターン繰り返す。
(3) (2) と同じ。残った図形の外辺のどれかと生成した図形の外辺のどれかが一致する。
  最大 2x4=8 パターン繰り返す

644 :デフォルトの名無しさん:03/01/26 09:55
>>640
>C=A+BのAを生成する関数を書いてくれると助かる。

具体的なコードを提示できなくて悪いんだけど、
分割する前の図形の辺は、必ず分割した後の図形の辺(の1部)に
なる事を利用すれば、かなり絞り込めるんじゃないの?

645 :644:03/01/26 10:04
「辺」というよりは、「辺に接するマス」だな。

646 :644:03/01/26 11:41
>>555とはかなり違う戦略だけど、こんな感じで見つけ出せないかな・・・

1.始点となるマスを任意に決定(下図 A)。
A の場合、上と左の辺が切断した際にも辺となる点に注意(枝狩りに使えそう)。
まだ、下と右の辺がどうなるかは未決定。

2.全てのマスに対して、A と対応づけてみる(下図 a)。
a の場合、右の辺が切断した際にも辺となることが分かっている。

3.A に対して、つながるマスを設定する(下図 B)。
ここで、A の右側は辺にはならない事が決定する。

4.B に対して、対応するマスを決定する(下図 b)。

AB*****
*****ba
**----*
**----*
****--*
****--*
------*
------*

647 :デフォルトの名無しさん:03/01/26 13:34
random関数で引数を持たせるということはできるのでしょうか?
もしできないのならどうすればいいのでしょうか。
コンパイラはg++です。

void Pile::shuffle()
{
for(int i = 0; i < rest; i++)
{
int j = random(rest); //動かない原因
int w = indexes[i];
indexes[i] = indexes[j];
indexes[j] = w;
}
}


648 :Cだけど:03/01/26 14:07
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
/* 0 から 99 までの乱数を表示する */
int main(void) {
randomize();
printf("Random number in the 0-99 range: %d\n", random (100));
return 0;
}

649 :デフォルトの名無しさん:03/01/26 14:55
647です。
自己解決してしました。
どうもありがとうございました。

650 :デフォルトの名無しさん:03/01/26 16:22
//ブロックの追加
Add(pBlock);

if(m_bShift){
for(int i = 0; i < GetSize(); i++){
static_cast<CDirBlock*>(GetAt(i))->SetRect(BLOCK_STOCKRECT[i]);
}
}
return pRetObj;

BlockArray.cpp(49) : error C2664: 'SetRect' : 1 番目の引数を 'int' から 'const class CRect &' に変換できません。 (新しい機能 ; ヘルプを参照)
理由: 'int' から 'const class CRect' へは変換できません。
コンストラクタはソース型を持てません、またはコンストラクタのオーバーロード レゾリューションがあいまいです。

このエラーの解決方法教えて〜〜〜〜〜〜〜〜〜〜〜〜



651 :デフォルトの名無しさん:03/01/26 16:33
高校で突然c言語のプログラムを作る事になりました。
本を読んでもサッパリで、丸投げ状態です。
誰か作って頂けないでしょうか?
課題は以下の通りです。

最短経路のプログラムを作る
入力:グラフと経路の始点、終点
入力フォーマット:'(' '(' 頂点ID 頂点ID ..... ')'
          '(' '(' 頂点ID 頂点ID 距離 ')' ..... ')' ')'
         '(' 頂点ID 頂点ID ')'
出力フォーマット:'(' 距離 頂点ID 頂点ID ..... ')'

652 :デフォルトの名無しさん:03/01/26 16:43
>>651
「最短経路探索」でググってみれば、
幾らでも有名どころのアルゴリズムが
見つかるような気がするが・・・
一体何が分からないんだ?

653 :デフォルトの名無しさん:03/01/26 18:05
ダイキストラあたりが一般的かな?
他のお勧めアルゴリズム漏れもきぼーん。

654 :デフォルトの名無しさん:03/01/26 18:07
これ。
http://hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm

655 :デフォルトの名無しさん:03/01/26 18:54
>>650
マルチだったのかよ!!

656 :デフォルトの名無しさん:03/01/26 18:55
>>642
減ってませんか。

657 :デフォルトの名無しさん:03/01/26 19:07
>>655
すいません。急いでたものですから

658 :デフォルトの名無しさん:03/01/26 21:41
>>657
マルチが何故いけないか全然理解して無いだろ。

659 :デフォルトの名無しさん:03/01/26 21:45
じゃ、放置決定だね。

660 :555:03/01/27 00:59
未だに>>552をやってる訳だが。
問題の図形の大きさは8×8までで十分ですか?それなら、
unsigned char c[CHAR_BIT]で一つの平面を表せるんだけど。

661 :552:03/01/27 07:03
>>660
出来る範囲でおながいします。

662 :デフォルトの名無しさん:03/01/27 20:17
>>660
今時、そこまで詰め込まなくても良いと思うけど。
途中経過が膨大になってメモリーを圧迫するようになってから考えれば良いんじゃない。

最初は、わかりやすいように1マス1バイトで良いでしょう。

663 :デフォルトの名無しさん:03/01/28 13:34
宿題スレで聞けって言われたんでお願いします。

どうしても出来ないんで御教授お願いします。
n及びn+2がともに素数になる数の内15000以上の最小の数値の組み合わせ
nとn+2を求めるプログラムを作成せよ。って問題なんですが
お願いします。


664 :デフォルトの名無しさん:03/01/28 13:37
ageとけよ。
わからんぞ>>663

665 :デフォルトの名無しさん:03/01/28 13:39
>>664
スマソ。sage進行かと思って。

666 :デフォルトの名無しさん:03/01/28 13:39
方向としては、
15000以上の奇数を追って、素数がでたなら、その数プラス2の値も、
素数判定して、素数なら出力終了、で良いんじゃないの?

667 :663:03/01/28 13:41
>>666
素数判定ってどんな関数を作ればいいんですか?

668 :デフォルトの名無しさん:03/01/28 13:48
エラトステネスのふるい

669 :デフォルトの名無しさん:03/01/28 13:49
小さい方の数から割っていけば良い。

670 :デフォルトの名無しさん:03/01/28 13:49
どなたか教えて下さい。
Windows3.1やWindows95やWindows98やWindowsMEでは問題なかったのですけど、
Windows2000やWindowsXPでエスケープシーケンスの処理が入っているEXEファイルを
実行してもエスケープシーケンスの部分が正しく動作しません。
MS-DOSプロンプトの問題なのでしょうか???
例えば・・・画面に表示されている文字の削除で、
printf("ESC[2J"); または printf("\033[2J");
とやるとWindows2000やWindowsXPでは画面上に [2J とだけ表示されて、
画面上の文字が表示されません。
Windows2000やWindowsXP環境でエスケープシーケンスを入れる時の方法があれば、
教えて欲しいのですが・・・。よろしくお願いします。

671 :デフォルトの名無しさん:03/01/28 13:52
Win2000やXPはDOSベースで動いてない。
システムを勉強したほうがいいね。

672 :デフォルトの名無しさん:03/01/28 13:56
多分答えは
15137
15139

673 :デフォルトの名無しさん:03/01/28 13:56
>>671
レスありがとうございます。
では、Win2000やXPはDOSベースで動かすにはどうしたらいいのかご存じですか?
(私はDOSプロンプトで動作するものだと思いこんでいましたので。)
度々申し訳ありませんが、ご回答して頂けると幸いです。

674 :663:03/01/28 14:00
>>672
素数判定はなんとかなりそうなんですが、
双子素数はその素数判定をnとn+2のときを続けてforループか
なんかでやるんですか?

675 :デフォルトの名無しさん:03/01/28 14:04
DOSベースでないOSをDOSベースで動かしたいといわれても

676 :デフォルトの名無しさん:03/01/28 14:05
>>675
無茶っていうことですね。了解しました。
度々のご回答、ありがとうございました。

677 :デフォルトの名無しさん:03/01/28 14:06
>>663
好きなようにすれば良い。
出来上がった物を改良して行っても良い。

678 :デフォルトの名無しさん:03/01/28 14:07
エスケープシーケンスを使わない方法でやるしかないよ。

679 :デフォルトの名無しさん:03/01/28 14:09
>>676
Win2000 or WinXP上からWin95系のエミュレータを動かして実行するっていう荒技もあるけど
それじゃだめなんでしょ?

680 :デフォルトの名無しさん:03/01/28 14:12
>>678
エスケープシーケンスの代わりになるような方法が他にあるのでしょうか??

>>679
個人的に使う分ですので、それでも構いませんが、どんなツールが必要なのですか?

681 :デフォルトの名無しさん:03/01/28 14:24
>>680
やったことないが、CONFIG.NTかなにかに
ANSI.SYS入れても動かないのだろうか<未確認

682 :デフォルトの名無しさん:03/01/28 14:26
>>681
レスありがとうございます。
ネットでいろいろと調べてみます。
情報提供に感謝します。

683 :681:03/01/28 14:28
>>682
http://f1.aaacafe.ne.jp/~pointc/log137.html
できそうだ。

684 :デフォルトの名無しさん:03/01/28 14:30
>>683
貴重な情報ありがとうございます。
早速試してみます。

685 :デフォルトの名無しさん:03/01/28 14:39
>>684を試した結果
出来ました。みなさん本当にありがとうございました。
Windows2000環境で、C:\WINNT\system32のconfig.ntファイルに
「device=%SystemRoot%\system32\ANSI.SYS」
の1行を追加してマシンを再起動したら、画面クリアや文字に色がついたりと、
エスケープシーケンスに対応されるようになりました。

686 :デフォルトの名無しさん:03/01/28 14:41
>>683
それでも32ビットアプリの場合はエスケープシーケンスは無理という事ですな

687 :デフォルトの名無しさん:03/01/28 16:30
>>663
常に同時にnとn+2を判定して行って、
両方とも素数の時に出力しても良いし、
常に最後の一つは格納しておき、
次に求まった物とそれとの差が2なら出力する
というような物でも良い。
それとももう出来たのか?

688 :デフォルトの名無しさん:03/01/28 16:35
あげ

182 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)