1 :
デフォルトの名無しさん:
うふっ、なんだも聞いてね。
>>1 あれ?いつもの典プレは?
素人がスレッド立ててんじゃねぇよぼけ。
4 :
デフォルトの名無しさん:02/12/29 11:10
6 :
デフォルトの名無しさん:02/12/29 11:10
8 :
デフォルトの名無しさん:02/12/29 11:12
スレ回数が増すごとに、スレタイのレヴェルが下がってる・・・
10 :
デフォルトの名無しさん:02/12/29 11:16
>7-8
それは別スレじゃねーか。
それと、名無し@沢村は無視すること。
>10
Boardが初期化されていない。以上。
13 :
デフォルトの名無しさん:02/12/29 11:21
>>12 ありがとうございます。
何をすればいいのかわかりませんが、とりあえず、検索したりして考えてみます。
わかったっぽいです。どうも。
15 :
デフォルトの名無しさん:02/12/29 13:35
積分のさせるプログラムを作りたいのですが、教えて下さい。
16 :
デフォルトの名無しさん:02/12/29 13:36
ついでに微分も・・・
17 :
かおりん祭 ◇VqKAORinK6:02/12/29 13:44
∋oノハヽo∈ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
从o゚ー゚从< 新スレおめでとうございま−す♪
= ⊂ ) \_______
= (__/"(__) トテテテ
18 :
デフォルトの名無しさん:02/12/29 13:52
>>15 の???
セキブンってのはカンタンに言っちゃうと足し算
19 :
デフォルトの名無しさん:02/12/29 14:04
>>18
で?どうすれば・・・?
20 :
デフォルトの名無しさん:02/12/29 14:06
21 :
デフォルトの名無しさん:02/12/29 14:18
>>20
プログラミング例を示して下さるとありがたい!
22 :
デフォルトの名無しさん:02/12/29 14:23
>>21 計算精度を考慮に入れなければ…
double S = 0.0;
double x;
x1 x2 は領域の端点
f は積分する関数
for (x = x1; x < x2; x += (x2-x1)/100)
S += f(x) * ((x2-x1)/100);
23 :
デフォルトの名無しさん:02/12/29 14:24
ニュートン・コーツ積分、ルジャンドル・ガウス積分、ロンバーグ積分を
教えて下さい。
24 :
デフォルトの名無しさん:02/12/29 14:33
>>22 質問者じゃないけどさ、
forが終わってから、dx最後にかけるのは駄目?
毎回毎回掛け算するんじゃ、計算速度的にどうなの?
最近のマシンじゃ変わらない
26 :
デフォルトの名無しさん:02/12/29 15:01
>>22
ありがとうございます!!
ついでに微分も・・いいですか?
いいですヨ!!
28 :
デフォルトの名無しさん:02/12/29 15:07
じゃー微分のプログラム例を示してください
29 :
デフォルトの名無しさん:02/12/29 15:14
>>25 そうなんだけどさ…
しかし、凄い教えて君だ。すげぇよ
このスレのタイトルいやだ・・・
31 :
デフォルトの名無しさん:02/12/29 17:17
微分のプログラム例を示してください。だれか教えて!!!!!!!!!1
32 :
デフォルトの名無しさん:02/12/29 17:18
うふっ、なんだも聞いてね。
33 :
デフォルトの名無しさん:02/12/29 17:31
dx は刻み幅
f は積分する関数
(f(x+dx)-f(x))/dx
34 :
デフォルトの名無しさん:02/12/29 17:32
35 :
デフォルトの名無しさん:02/12/29 17:37
36 :
デフォルトの名無しさん:02/12/29 17:48
ホームページのフレームにMIDIを設置したのですが、
ウインドウズでは聴こえず、MACではループして聴こえます。
また、ウインドウズの場合そのフレームのみを表示するとループして聴こえます。
<embed src ="×××.mid" width="0" height="0" border="0" autostart="TRUE" repeat="TRUE" loop="TRUE" align="BOTTOM">
</embed>
↑で再生しています。
プラグインは、WINがウインドウズメディアプレイヤーでMACがQuickTimeです。
どうすれば両方でループ再生されるでしょうか。
というか、率直にいえばWINでもMACでもループできるソースを教えてくだされば幸いです。
よろしくお願いしますm(_ _ )m
>>36 ごめん、C 言語の本を色々調べたけど載ってなかった。
>>38 どちらかと言えばこっちが本スレでないかい?
ブックマークの並べ替えの都合で、このスレのスレタイは C で始めて欲しいんだが・・・
>>1 師ね
つーか、何で 1 は、
沢 村 立 入 禁 止
と書いてくれなかったの?
>>46 ・ マルチポスト
・ スレ違いの質問
・ 質問者への不適当な回答や煽り
・ 明らかに本人馬鹿なのに自分は天才発言
以上を懲りずに繰り返している。
ちなみに、「やらかした」 ではなく 「やらかしている」 が正しい。
48 :
デフォルトの名無しさん:02/12/30 01:18
・・・age
49 :
デフォルトの名無しさん:02/12/30 12:12
うふっ、なんだも聞いてね。
50 :
デフォルトの名無しさん:02/12/30 12:24
最近Cではない言語をやらされることになりました。
私は人権侵害だ、プログラミング言語を選ぶ権利は
基本的人権にあるのかなと思いK&Rを読みましたが
残念ながら書いてありませんでした。
486DX2をかかえて路頭に迷うしかないのでしょうか。
>>50 与えられた問題解決に際して、C を使うことが最適解であると思うなら、論拠を呈示
できるだろうから、それに基づいて使わせようとする人に猛反論すればいい。
そうでないなら、単なるわがままだ。
>>52 いっそ上司に思いの丈をぶつけて干されるのも良い人生経験じゃないかと思う。
上司は♀、50 が♂という設定で
「課長!僕は課長とCがしたいんです!」
『・・・!?』
「課長だってCがイイ!事くらい知ってるでしょう!?」
『・・・ええ、私だって大人よ・・・それくらい・・・知ってるわ。』
「だったら良いじゃないですか!Cしましょう!」
『・・・でも。私とあなたは上司と部下なのよ。そんな・・・ダメよ。』
「僕だって首は覚悟の上です!みんなだって言ってますよ!課長はCに偏見を持ってるって!!」
『そんな!・・・確かに経験は少ないけど・・・。』
「経験なんて関係ないです!課長、僕が手取足取り教えますよ!一緒にCしましょう!!」
『・・・(*´д`*)』
58 :
デフォルトの名無しさん:02/12/30 14:33
59 :
デフォルトの名無しさん:02/12/30 15:04
61 :
デフォルトの名無しさん:02/12/30 16:15
>>57 いやっ! そこ違う。やっぱりあなたはだめね。
私はC#なの。
62 :
デフォルトの名無しさん:02/12/30 17:15
>>62 で、何でデジカメのサイトに見せかけているのか。
64 :
デフォルトの名無しさん:02/12/30 17:31
>>63 よくわかりましたね。(笑)
特に意味はなくて、このサイトを作った時にデジカメにはまってたからです。
つまり客寄せですか
将棋スレできくか、ここで聞くかどちらかにしろよ。
それと、そのプログラム・・・・・C++・・・・
67 :
デフォルトの名無しさん:02/12/30 19:01
short i = -123;
unsigned j = (unsigned)i;
printf("%08x\n", j);
とすると、ffffff85 と表示されました。
unsignedでキャストしているから、0000ff85と表示されると思ったのですが、
なぜ符号が拡張されてしまうのでしょうか?
>>67 unsigned j = (unsigned short)i;
としたらちゃんと 0000ff85 になったよ。
PowerPC G4 500MHz
Project Builder 2.0.1
69 :
デフォルトの名無しさん:02/12/30 20:42
>>MachさんIEEEさんご苦労さん
その他の皆様ありがとうござい舞す。
70 :
デフォルトの名無しさん:02/12/30 20:50
>>68 それはおかしいぞ
>>67 jの型がちゃんと指定していないからintとして扱われている。
unsigned shortで宣言しろ。
おかしいのですか…。
ご指摘ありがとうございます。
>>71 ごめんおかしくなかった。
詳細としては
jはunsigned int型で、
jに代入するとき
j = (unsigned)i;
ってするとiをいったんint型に変換してそれからunsigned intに変換する。
だからfffff85になる。
j = (unsigned short)i;
ってすると、iは(unsigned short)型に変換されて、unsigned int に変換される。
unsigned同士だから上位が勝手にfで埋まることがないので、ff85になる。
74 :
デフォルトの名無しさん:02/12/30 22:19
カンマをタブに変換するフィルターを作りたいんですが
データをフィルタに通すと何も帰って来ないんです。
ここをこうしろ!ってとこがあったら教えて頂けませんか?
#include <stdio.h>
#include <string.h>
main(int argc,char *argv[])
{
FILE *fpr;
char *p;
char moji[BUFSIZ];
fpr = fopen( argv[1] ,"r");
while( fgets( moji ,sizeof(moji), fpr ) != NULL );
{
while(1){
p = strstr( moji , "," );
if( p==NULL ){ break;}
*p = '\t' ;
}
}
fprintf(stdout,"%s",moji);
}
75 :
デフォルトの名無しさん:02/12/30 22:26
>>74 >while( fgets( moji ,sizeof(moji), fpr ) != NULL );
末尾のセミコロンが邪魔じゃない?
77 :
デフォルトの名無しさん:02/12/30 22:34
こういうのって 1byte ずつ fgetc() したら遅くなる?
79 :
デフォルトの名無しさん:02/12/30 22:40
>>75さん
帰ってこないというのは、例えばdata.datというファイルに
1,2,3,4,5
という文字列を与えたとして、フィルターを通しても
標準出力に改行しか帰ってこないことを言っています。
説明不足ですみません。
>>76さん
指摘ありがとうございます。
セミコロン抜いてみたけど、コンパイルした結果は変わりませんでした。
まともなデバッガ使え。
>>80 >セミコロン抜いてみたけど、コンパイルした結果は変わりませんでした。
うちではセミコロン抜いたらちゃんと動いたよ。
>>◆F52DmOxJlcさん
確認してみましたが、やっぱりダメでした。
なんでダメなのかさっぱりわかりません。
>>83 あ、ごめん、やっぱりダメだった。
ちょっと考えてみます。
>>83 わかった。
1. while( fgets( moji ,sizeof(moji), fpr ) != NULL );
末尾のセミコロンが邪魔。
2. fprintf(stdout,"%s",moji);
最初の while ループの中に入れる。
ところで printf("%s", moji) にしないのは何か理由があるのかな?
>> ◆F52DmOxJlc さん
ありがとうございます。うまく行きました!
ちなみにfprintfを使ってみた理由は、
参考にさせて頂いてるプログラムがfprintfでやってたからです。
お騒がせしました。
つぅかフィルタなら標準入出力使おうよと思う私はlinux厨ですか?
>>87 正常。
DOSだとtmpfile作るからどっちでも同じなんだYO
文化が違うんだ。
89 :
デフォルトの名無しさん:02/12/31 20:33
ところで、Cの質問は?
何かありませんか?
あ り ま せ ん か 〜 ?
90 :
デフォルトの名無しさん:02/12/31 20:35
来年って平成何年だっけ??
91 :
デフォルトの名無しさん:02/12/31 20:38
fprintf(stderr , "hello");
ってかいたときのstderrって普通のstdoutとどう違うの?
コンソールにはどっちでも表示されるんだけど。
>>91 大抵の環境だと stdout が 1番で stderr が 2番
94 :
デフォルトの名無しさん:02/12/31 20:43
カステラが1番だと思います・・・・
電話は二番ですよね
マジで理由教えてください。お願いします。
>>96 出力をリダイレクトしれみれ。
違いが出てくる。
>>97 レダイレクトしてみましたが何もならないのですが。
>>98 >レダイレクトしてみましたが何もならないのですが。
stdout の場合と stderr の場合を比べて、
何も違いが無かったのか?
ないっつってんでそ。
fprintf(stderr,"errっすね。"); // 標準エラー出力
fprintf(stdout,"暮れっすね。"); // 標準出力
printf("暮れっすよ。"); // 標準出力
みなさんに感心されっぱなしです。
105 :
デフォルトの名無しさん:02/12/31 21:39
しっぱなしって言うんだよ!
106 :
デフォルトの名無しさん:02/12/31 21:45
fprintf(stdout,"くまさん越"); // 標準出力
fprintf(stderr,"冬ですね"); // 標準エラー出力
fprintf(stdout,"なんてね"); // 標準出力
なコードを
program.exe > NUL
した感じです。
107 :
デフォルトの名無しさん:02/12/31 21:55
オナニーしっぱなし
>>87 フィルタを標準入出力にするとこんな感じ?
#include <stdio.h>
#include <string.h>
main( )
{
char *p;
char s[BUFSIZ];
while( gets(s)!=NULL)
{
while(1){
p=strstr( s,",");
if( p==NULL){break;}
*p='\t';
}
puts(s);
}
}
今だに gets() 使うやつなんていたのか......
112 :
名無し@沢村:03/01/01 06:22
俺はMSX-BASICから入ったものだが、C言語もC++もMSX-BASICほど高度ではないような気がするのは気のせいだろうか?
それからMS_DOSとMSX_DOSの区別がつかず、MS_DOSはアスキーの発明と思っていたことがあったよ。
>>111 じゃあこんな感じ?
#include <stdio.h>
#include <string.h>
main( )
{
char *p;
char s[BUFSIZ];
int i;
while(fgets(s,sizeof(s),stdin)!=NULL)
{
while(1){
p=strstr( s,",");
if( p==NULL){break;}
*p='\t';
}
for (i=0;s[i]!='\0';i++)
{
if(s[i]=='\r' || s[i]=='\n')
{
s[i]='\0';
}
}
puts(s);
}
}
>>112 CもC++もBASIC並にしか理解していないんだ。
かわいそう・・・・・・
>>114 お前、MSX_BASIC知ってるの?かなりの歳だな。
>>113 一文字ならstrchrでいいと思うけど、だめなの?
119 :
デフォルトの名無しさん:03/01/01 13:02
2次元配列に文字列を与えるにはどうしたらいいでしょうか?
a[0][0]='a';
a[0][1]='b';
a[0][2]='c';
のようにする以外の方法教えてくださいです。
a[2][4] = { "abc", "def", }; //こうだっけ???
121 :
デフォルトの名無しさん:03/01/01 13:09
>>120 レスありがとうございます^^
その方法ではできません。。。
#include <stdio.h>
#include <string.h>
main(){
char st[10][10];
char *a="ahahahaha";
char *b[2]={"123","eee"};
strcpy(st[0],a);
printf("%s",st[0]);
printf("%s %s",b[0],b[1]);
return 0;
}
//こんなとこ?
123 :
デフォルトの名無しさん:03/01/01 13:14
>>122 やはり1行ではできないのでしょうか><
124 :
デフォルトの名無しさん:03/01/01 13:19
>>123 char a[2][10] = {"hello" , "world"};
って宣言時にやればできる。
125 :
デフォルトの名無しさん:03/01/01 13:22
>>124 わかっていますが。。。
途中でできないものなんでしょうか?
strcpy
char str[2][4];
memcpy(str, "abc\0def\0", sizeof (str));
こんな感じかな?文字列リテラルの最後のヌル文字はなくてもいいかも。
129 :
デフォルトの名無しさん:03/01/01 13:35
>>125 だから関数の途中で{}で囲んでその先頭で宣言すりゃいーじゃん。
130 :
デフォルトの名無しさん:03/01/01 13:37
>>128 2次元配列ってつながってることが保証されてるの?
131 :
デフォルトの名無しさん:03/01/01 13:46
>>126 ありがとうございます^^
できました♪
みなさんおさわがせしてすみませんでした><
配列もポインタもほとんど同じなんだよ
char a[3][20]={"itteyosi","
>>1","chuubou"};
char *a[20]={"itteyosi","
>>1","chuubou"};
char a[][20]={"itteyosi","
>>1","chuubou"};
上の3つは全部同じ意味
配列もポインタもほとんど同じなんだよ
char a[3][20]={"itteyosi","
>>132","chuubou"};
char *a[20]={"itteyosi","
>>132","chuubou"};
char a[][20]={"itteyosi","
>>132","chuubou"};
上の3つは全部同じ意味
134 :
デフォルトの名無しさん:03/01/01 13:53
>>132 勉強しなおせ。
1番目と3番目は同じ意味だが、2番目は明らかに違う。
しかも宣言のしかたを勘違いしてるし。
1番上はchar型の要素20、要素3の配列
2番目はchar型の要素20へのポインタ
3番目は1番上のに空の配列を使って初期化したもの
そうか、131はそれを聞きたかったのか。
char *s[2];
で
s[0] = "hello world";
s[1] = "do you know me?";
とかしたかったのか。
139 :
デフォルトの名無しさん:03/01/01 13:58
>>134 入力文字列をソートするプログラム作りたかったのです(汗
ポインタを使わずに交換する方法を探していました。
#include <stdio.h>
#include <string.h>
main(){
char a[2][20];
strcpy( a[0], "asdfkja");
strcpy( a[1], "fjaljawie");
printf("%s %s", a[0], a[1]);
return 0;
}
>>138 明らかに2番目を勘違いしてるのに気づかないの?
文法からやり直したほうがいいぞ。
142 :
デフォルトの名無しさん:03/01/01 14:13
>>141 だって式の中では配列はポインタに読み替えられるんだぞ
>>142 >char *a[20]={"itteyosi","
>>132","chuubou"};
>2番目はchar型の要素20へのポインタ
これが正しいと?
しかも、これで宣言したものに対して、
strcpy(a[0] , "hellow");
ってやってみそ。素敵なことがおこるぞ。
>>144 とにかくいいの!
実際にソース書いて実行してみろって
ちなみに出力する時に
a[1]と書くのは*(a+1)のシンタックスシュガーだから全く同じ
ここからも配列とポインタが同じって事が分かるだろ?
147 :
デフォルトの名無しさん:03/01/01 14:39
誰がどういう主張をしているかが分からなくなってきた。
>>145 おまえが正しいと思っていることを上げてみてくれ。134とおまえは同意見じゃなかったのか?
ID晒せよバカ
149 :
デフォルトの名無しさん:03/01/01 14:45
プ 馬鹿が一人いるなw
150 :
デフォルトの名無しさん:03/01/01 14:47
ポインタと配列を同じだと主張している奴が1人
char *s[20];をサイズが20の配列へのポインタと思っている奴が1人。
馬鹿は2人だと思うが。
151 :
デフォルトの名無しさん:03/01/01 14:53
うふっ、なんだも聞いてね。
ぱらさいとなスレッドだ
fusianasanしろよ
IP漏れたらファックされるだろ・・・
>char *s[20];
× サイズが20の配列へのポインタ
○ charのポインタが20個の配列
要するにポインタのポインタ。
ていうか、なんか感覚的にcharの配列って、ぼーっと見るとただの文字列に
見えてしまって、charポインタの配列って、わかりづらい。これが
CFoo* pFoo[20];
とかだと、もちょっと違う感じなんだけど...って、俺だけ?
ポインタは人に聞いたりするより
本とかを読んで感覚で覚えるべし
157 :
デフォルトの名無しさん:03/01/01 15:49
>>156 理屈で覚えろよ。
遠回りするだけだぞ。
値か場所かの違いだけやんー。
159 :
デフォルトの名無しさん:03/01/01 16:11
「やんー」
値か場所かの違いやおまへんかー。
>>157 体得した方が結局は速い。って言うか人それぞれ。
値か場所かの違いやもうかりまっかー。
値か場所かの違いだけぼちぼちでんなー。
IDとIPは別物だ
今、アセンブラをC言語で翻訳するっていうプログラムを
紙からパソコンに写しているのですが、
エラーで「暗黙宣言された」ってのがわからなくて、
困ってます。どういうエラーなのか教えてくれませんか?
exitやstrcpy、strcmpなどを使うと出るみたいです。
ソフトはultraCってのを使っています。
#include <string.h>
かな。
風邪が直りません。
ビタミン「C」くらはい。
Cのポインタは表現方法が直感的でないので難しいね。
>>146 配列演算はポインタ演算に読み替えられる。
しかし、配列型とポインタ型とは別物。
173 :
デフォルトの名無しさん:03/01/02 03:34
今更だが
>>112の
"C言語もC++もMSX-BASICほど高度ではないような気がするのは気のせいだろうか?"
コレに疑問持った香具師は居ないのか?
C++はC言語だな。(ボソ
>>173 10年以上C/C++使ってるけど、ある意味MSX-BASICのほうが高度だな。
177 :
デフォルトの名無しさん:03/01/02 04:50
はい、先生質問があります。
unsigned char *ptr;
unsigned char buffa[4];
buffa[0]=0x00;
buffa[1]=0x01;
buffa[2]=0x02;
buffa[3]=0x03;
ptr=buffa;
としました。
んで次の処理で、
printf("buffa[0] = %x\n",*ptr++);
printf("buffa[1] = %x\n",*ptr);
とすると、狙い通り
buffa[0] = 0
buffa[1] = 1
となるんですが、
printf("concatinate = %x\n",(*ptr++)*0x100+(*ptr));
とやると、
concatinate = 0
としかなりません。
評価を考えると、
concatinate = 1
となりそうなのに....
>>177 (*ptr++)*0x100+(*ptr)
の結果は、恒例の未定義です。
180 :
デフォルトの名無しさん:03/01/02 06:03
>未定義
ptr=buffa;
ではたらないんでしょうか。
どうかご教授ねがいます。
>>180 いや、未定義じゃなくて不定のような気もしてきた。
上の式は、
1)*ptrを取出す。(buffa[0])
2)ptrを1進める。
3)*ptrを取出す。(buffa[1])
という動作を期待してるんだと思うけど、1),2),3)の順番に処理される保証は無い。
例えば、1) 3) 2) の順に処理されるとすると、右の*ptrも、左の*ptrも両方buffa[0]の値になる。
ご回答ありがとうございます。
そうですか、評価順番の不定ですか....
確かに下記の順番を期待していたのです。
>1)*ptrを取出す。(buffa[0])
>2)ptrを1進める。
>3)*ptrを取出す。(buffa[1])
これはK&R, ANSIでも評価順番の不定となっているんですかねー。
いまから読み込んでみます。
(ちなみに処理系はLINUX付属 GNU C?)
どうもありがとうございました。
183 :
デフォルトの名無しさん:03/01/02 06:40
それ以前の問題。
printf("buffa[0] = %x\n",*ptr++);
buffa[0] = 0
なら、
printf("concatinate = %x\n",(*ptr++));
concatinate = 0
になるのでは?
>>182 うちでは、((*ptr[1]) * 0x100 + (ptr[2])) == 258
になりまいたが、出力結果は102でした。
なので、%xなどは使わなければよいと思います。
185 :
デフォルトの名無しさん:03/01/02 13:40
EXIT_FAILUREのfailureて難しい発音だな
ふぇぉぃゅ.
188 :
デフォルトの名無しさん:03/01/02 14:11
オマエラモチツケフジでツイテルゾ
>>184 "%x"だろ? なら、 0x102=258 だろうが。
ていうか、インクリメンタル演算子は、「式評価後に1増やす」だろうが。
なら、
>>177が"0"になるのは当然。
今、大学3年で卒業研究で遺伝的アルゴリズムに関した
研究をしたいと考えているものです。
そこで、プログラム(C言語で)を作成するにあたり
参考になるようなサイトがありましたら教えて頂きたいのですが・・・
>>190 C言語の基礎をしりたいのか、遺伝的アルゴリズムのPGを知りたいのか?
ていうか遺伝的アルゴリズムって、何?
>>190 東京駅の八重洲ブックセンターにでも行け!
交通費くれる?
>>大学生
先ず最初に明治神宮に行ってください。そこで交通費を拾ってください。
>>194 産休!へー、おもしろそうだな。
>>大学生
>プログラム(C言語で)を作成するにあたり
って、書いてる時点で、とりあえずコード書くぶんには問題無いんでしょ?
だとしたら、
>>194のサイトの内容参考にして、アルゴリズム練ればいいんじゃない?
...つーかそのアルゴリズム練るのも研究の一部のような...。
>>大学生他
自分で作れないのであれば既存の本などから抽出して処理して、
まとめて形にするのが大学生の本分です。
>>193 禿同。遺伝的アルゴリズムって何だ?
染色体がどーのとかをまとめたいの?
>>200 いろんなアルゴリズムである問題に取り組み、優秀なモノだけを残していく。
で、いろいろなアルゴリズムを動的に生成できれば、実行して放っておくだけで
どんどん効率の良いアルゴリズムが生まれていくのではないか?と言うお話。
>>201 あっ!そういう意味の遺伝ってことね
大学生さんは大変だねぇ
俺はまだ中坊だから気楽でいいや
>>201 それは遺伝的アルゴリズムを「アルゴリズム」に適用した場合ね。
菊川怜の卒業研究は遺伝的アルゴリズムを
「生コンクリートの配合比率」に適用している。
奥が深いぞ!
遺伝するプログラムって、LISPが有名(なんか日本語の適用間違っている・・・)だよね?
>>大学生
参考文献に2chも書いておけよ。
referencesが書物ばかりだと思ってらっしゃる。ププク
>>208 プログラム板的には参照sと訳してしまうな。
210 :
デフォルトの名無しさん:03/01/02 19:07
遺伝アルゴリズムって乱数がキーなんだよな。
>>210 突然変異の「できそこない」とかがまた・・・。
>>206 referencesはどう訳しても文献にはなりません。
間違いは素直に認めましょう。
reference
¨【名】(複‐・enc・es/‐iz/)
2 !〔…の〕参照,参考〔to〕;? 出典,参考書,典拠;参考事項
¨【動】|他|〈書物・論文など〉に参照事項[参考文献表]を付ける
215 :
デフォルトの名無しさん:03/01/02 19:25
小学生をいじめるなよ
動的なものを参考文献に含めるのは出版元によっては修正されるよ。
というより、普通に査読のある雑誌は滅多にURL表記載せないだろう。
国際会議クラスだとわからんが。
必死だな(w
URLは変化することもあるからな。
プ
URLは変化しないこともあるからな。
みんな208はご立腹だ。ちゃんとあやまれよな
真性リアルDQN厨房はもうお腹いっぱいなわけだ、わかるか?藁
224 :
デフォルトの名無しさん:03/01/02 21:39
Javaのantって一定のフォーマットに従ってコメント書けば
自動的にJavadoc生成してくれるけど
C言語にも似たようなツールってないの?
自分でライブラリ作ってAPI公開したいけど
シコシコ手書きするの面倒だとか そういうときに
227 :
デフォルトの名無しさん:03/01/02 22:22
>>226 GNUはそういうの作ってない?
Linux上で使いたいし つーか金ないし
228 :
デフォルトの名無しさん:03/01/02 23:13
>>227 コメント切り出すぐらい自分で作んなさい。
229 :
デフォルトの名無しさん:03/01/02 23:36
230 :
デフォルトの名無しさん:03/01/02 23:38
231 :
デフォルトの名無しさん:03/01/02 23:47
#include <string.h>
#include <stdio.h>
って二つ書いたらダメですかね?
232 :
デフォルトの名無しさん:03/01/03 00:02
うふっ、なんだも聞いてね。
234 :
デフォルトの名無しさん:03/01/03 01:35
#include "def.h"
#include<stdio.h>
extern FILE *fpsym;
extern int key_count;
これで始まるプログラムを実行すると、extern FILE *fpsym; で、
「そのようなテンプレートはありません」とエラーが出てしまいます。
なにかまずいのでしょうか?
>>234 fpsym はどのファイルのどの部分で宣言してるのかな?
236 :
デフォルトの名無しさん:03/01/03 12:36
参考書にヘッダファイルには
#ifndef WORD_MANAGE_HINCLUDED
#define WORD_MANAGE_HINCLUDED
.
.
.
#endif
と記述すべしと書いてあったのですが
意味がいまいちわかりません
WORD_MANAGE_HINCLUDEDが定義されていなかったら
WORD_MANAGE_HINCLUDEDを定義して内容を書くという意味なんでしょうか?
237 :
デフォルトの名無しさん:03/01/03 12:37
>>236 そおだよ。たいていはヘッダーの2重インクルード防止に使われている。
>>238 このソースってのはどんな場合でも書くんですか?
もしそうだったら別に意味を覚えてなくてもプログラムの定石として
暗記しとけば大丈夫ですよね?
>>239 >もしそうだったら別に意味を覚えてなくてもプログラムの定石として暗記しとけば大丈夫ですよね?
アホ丸出しだけどな。
>>239 .hには常に書くもの。
でも意味を理解しておいたほうがいい。
じゃあ一応意味を理解しといた方がいいのかなぁ?
参考書には複数回インクルードされた場合は内容すべてが消えてなくなる
とあるんですが
WORD_MANAGE_HINCLUDEDが定義されてなかったら定義して
結局はそれを最後にendifするのはどういう意味があるんですか?
できれば流れを説明して欲しいです
厨房でスマソ(ホントの意味でも中坊なんで(藁
>>242 if(!defined("hoge"))
{
define("hoge","huga");
〜
}
と等価。
>>243 hogeが定義されてなければ定義して
もしもう1度インクルードされると
1回目のインクルードでhogeが定義されているので
if(!defined("hoge"))の条件に合わずにその内容はスルーする
ってことですかね?
あっ やっぱりそういうことでよかったのか
どうもありがとうございました〜〜
既に定義されていれば、再定義しない、
これ迄に定義されていなければ、定義しておく。
インクルードしておくのも一緒
Javaのantって一定の法則に隊列組めば
自動的に巣穴生成してくれるけど
8言語にも似たようなルールってないの?
自分で蜂の巣作ってITE公開したいけど
チクチク手刺しするの面倒だとか そういうときに
249 :
デフォルトの名無しさん:03/01/03 14:26
ここC言語なんだけど。
Doxygen は C 言語で使えるけど。
リンク先ぐらい見ろよ。
>>251 だからどうした?質問がjavaなんだが。
254 :
デフォルトの名無しさん:03/01/03 14:44
あたま蟲涌いてるよ?
なんだ、ただの馬鹿か。
くだらないことで上げんなよ馬鹿
250 = 252 = 255 = 257
自分の誤解から始まったことだろ。
いいかげんにしろ。
>>258 はずれ。2人以上から指摘されてるんだ。自分の方が勘違いだと言うことを認めた方が良いぞ。
なんだ、ただの馬鹿か。
C++になってしまうけど
例外とreturnでの関数の終了はどう使い分ければいいのですか
>>261 ちょっと前のjavaスレで同じ話があったなぁ。
>>259 何が勘違いか言わないと、馬鹿だと思われるよ。
気付かないから電波なのですよね:-p
>>261 C言語だったら0か非0だと思うけど
C++はよくわからんが
俺はいつもexit(EXIT_SUCCESS)とexit(EXIT_FAILURE)しか
使わないから
↑
ハンドルネームこのスレの236さんとは関係ないです
ゴメンナサイ
前スレから変更するの忘れてて
267 :
デフォルトの名無しさん:03/01/03 18:25
うふっ、なんだも聞いてね。
>>261 C++ だけど、答えておく。
帰り値の値でエラーと正常の区別がつかない場合や、
必ずエラーチェックが必要な場合に例外を使う。
いや、C++では原則的に返値チェックではなく例外を使うべき。
例外を使用すると、正常系と異常系の処理を分離して記述できるので、
見通しが良いプログラムになる。
270 :
デフォルトの名無しさん:03/01/03 21:01
271 :
デフォルトの名無しさん:03/01/03 21:16
272 :
デフォルトの名無しさん :03/01/03 21:22
code <<= 1
ってどういう意味でしょうか?
code = code << 1
と考えて良いですか?
273 :
デフォルトの名無しさん:03/01/03 21:24
274 :
デフォルトの名無しさん:03/01/03 21:24
-(+(-(+(-(+0)))));
逝ってよし>>=275
ってどういう意味でしょうか?
逝ってよし = 逝ってよし
>>275 と考えて良いですか?
0に+付けても-付けても同じじゃないか?
278 :
デフォルトの名無しさん:03/01/04 11:48
冬休み明けに提出しなきゃいけない課題があるのですが、あまりにも難しすぎて私の力では何にもなりません。
持っている参考書やC言語辞典を引っ張り出して見て考えたのですが、もうダメです。
どなたか教えてもらえないでしょうか?
ソースとかは後で(夕方くらいに)書き込みさせていただきますが、題材は算術言語処理です。
279 :
デフォルトの名無しさん:03/01/04 11:54
配列で例えば最初の定義で
double m[200]
とかいれて、m[197]だけ使うというのはおかしいのでしょうか?
あと、以下の定義分はどこかおかしいところがあるのか教えてください。
申し訳ありません。よろしくお願いします。
double m[299] = {1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
280 :
デフォルトの名無しさん:03/01/04 12:09
>>280 でも、197個しか使う予定がないのに200個確保する意味もあまり無いな。
>>280,281ありがとうございます。
すいませんもう少し質問させてください。
279のようにdouble m[299]
を定義した後に、
double s[13]
も定義して次のような演算をやらせます。
するとs[]の中身は全て1になるはずなのに
ゼロばかり出力されてしまいます。
どこがおかしいのでしょう。もうしわけありませんがよろしくお願いします。
s[1]=1/2*m[206]+1/2*m[207];
s[2]=65/101*m[220]+36/101*m[221];
s[3]=8/15*m[228]+7/15*m[229];
s[4]=158/203*m[234]+45/203*m[235];
s[5]=79/248*m[238]+169/248*m[239];
s[6]=203/302*m[242]+99/302*m[243];
s[7]=207/351*m[245]+144/351*m[246];
s[8]=374/409*m[248]+35/409*m[249];
s[9]=255/452*m[250]+197/452*m[251];
s[10]=228/499*m[252]+271/499*m[253];
s[11]=304/552*m[254]+248/552*m[255];
s[12]=493/610*m[256]+117/610*m[257];
>>282 0になるのが正常な動作。
1/2=0, 158/203=0, ...
小数まで計算したければ、
1.0/2.0 = 0.5
ちなみに出力は次のようにしています。
for(n=1;n<13;n++){
b=s[n];
printf("%.4f,",b);
}
>>283 ありがとうございます。
ということは,279の宣言の1を全部1.0にすれば上手くいくんでしょうか?
違いますね。他の分数も全て.0を書かなければならないということですね。
ありがとうございました。
for(int i=0; i<299; i++)
m[i]=1;
がいいな。
分子にだけ「.0」を付ければ良いよ。
置換できるなら、
置換前: /
置換後: .0/
で実行すればって遅いか・・・
>>279 定義と宣言を混同してる。
課題・宿題はそれ用のスレがあるから、そっちいった方がいいと思う。
289 :
278です:03/01/04 16:46
わかりました。別のスレで質問してみます。
290 :
デフォルトの名無しさん:03/01/04 22:26
291 :
デフォルトの名無しさん:03/01/04 22:27
while( i-- > 0 ){
y[x++] = 0;
}
という文で、最初 i=3 x=0だったとしたら
x[0]=0,x[1]=0,x[2]=0と配列にデータが入るのでしょうか?
293 :
デフォルトの名無しさん:03/01/04 22:44
間違えました。
y[0]=0,y[1]=0,y[2]=0でした。
294 :
デフォルトの名無しさん:03/01/04 23:26
つぅか実行しろよと。
>>291 そこまで省略して書くならwhile(i--)にしろよ。
>>296 そういうツッコミ入れるなら変数も減らせよ。
while(i--)
{
y[x++] = x;
}
という文で、最初 i=3 x=0だったとしたら
0 = x(0),1 = x(1),2 = x(2)とデータが入るのでしょうか?
>>298 解読しなければならないコードは捨てるのが正解。
while(i--)
/*{*/
y[x++] = x;
/*}*/
>>301 >>300の言いたいことが「コンパイルの時に無かったことにしたい」のなら
while(i--)
#if 0
{
#endif
y[x++] = x;
#if 0
}
#endif
だろ。
>0 = x(0),1 = x(1),2 = x(2)とデータが入るのでしょうか?
y[0]=0,y[1]=1,y[2]=2
304 :
デフォルトの名無しさん:03/01/05 02:00
while(i--)
y[x] = ++x;
最初i=3 x=0 だったらどうなるの?
えっ?ってか、未定義?
>>304 y[0]==0,y[1]==1,y[2]==2にしたけりゃ
while (x < 3) {
y[x] = x;
++x;
}
y[0]==1,y[1]==2,y[2]==3にしたけりゃ
while (x < 3) {
y[x] = x + 1;
x++;
}
パッと見どっちかわからない書き方したって、
役に立たんよ。
memset(y,0,sizeof(y[0])*i);
>>308 sizeof yじゃだめなんだろうか・・・
yの要素数がi個だとは誰も言っていないか。
y = calloc(i,sizeof(size_y));
初期化とまちがえた。 < プッ
格子点の個数を求めるプログラムを作ってみたのですが、上手くいきません。
半径rの球の内部にあって、かつ、全ての成分が正であるような格子点を
求めるように計算させようとしたのですが、どこかがおかしいようなのです。
どこがおかしいのか教えて下さい!
#include <stdio.h>
//半径rの球の内部にある格子点のうち、正数の物の個数を求める
void main(){
int i,j,k;
int n=0;
int r,q;
printf("半径rの値(少数可)を入力して下さい!\n");
scanf("%d",&r);
q=r*r;
for(i=1;1<=r;i++){
for(j=1;j<=r;j++){
for(k=1;k<=r;k++){
r=i*i+j*j+k*k;
if(q<=r){break;};
printf("%d",r);
n=n+1;
};
};
};
printf("半径rの開球に含まれる格子点の数は%d個である\n\n",n);
}
315 :
デフォルトの名無しさん:03/01/05 17:55
>>313 すまんがもうちょっと分かりやすく説明してくれ。
>315
解りにくくてすみません・・・
まず、3次元空間を考えます。
そして、原点を中心とする半径rの球を考えます。
この球をCと名付けておきます。
Cの内部にある格子点全体を考えます。
これらの格子点の位置はx,y,z座標によって表現できますが、
この格子点おなかでx座標、y座標、z座標の値が全て正になるものの全体をNとおき、
Nの個数を求めたいのです。
訂正
この格子点おなかで×
この格子点のなかで〇
for(i=1;1<=r;i++){
typo?
>318
ありがとうございます!
今直したけれど、やっぱり上手くいかないです・・・
rに1を代入した時にn=1になってしまうんです(本来はn=0)
rをfor文の中で変化させているでしょ、
で、三つのfor文の終了条件でそのrを使っているから、
そこで制御しきれていないと思うのだが?
>320
上手く出来ました、ありがとうございます!
15行目でrを再利用したのがよくなかったのですね。
もう一つ変数sを定義して使ったら上手くいきました。
322 :
デフォルトの名無しさん:03/01/07 01:32
age
323 :
デフォルトの名無しさん:03/01/07 12:10
#includeの'#'ってなんなの?
意味あんの?
324 :
デフォルトの名無しさん:03/01/07 12:41
#から始まるのは、プリコンパイル時のものって意味と思われ。
#defineとかね。
で、Cの命令とは違うことを強調しているものと
>プリコンパイル時
変な用語を使う香具師だな
普通は 「プリプロセッサ命令」 だの 「ディレクティブ」 だの言うと思ったが
C言語初心者なのですが1!〜100!までを配列を使って正確に表示するプログラムを
参考程度に教えて下さい。
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
int d[] = { 0 };
system ( "guile -c '(letrec ((f (lambda (n x) (if (= n 0) x (f (- n 1) (* n x)))))) (letrec ((g (lambda (n) (if (<= n 100) (begin (display (f n 1)) (newline) (g (+ n 1))))))) (g 1)))'" );
return d[0];
}
329 :
デフォルトの名無しさん:03/01/07 17:50
宿題手伝ってください・・・・
330 :
デフォルトの名無しさん:03/01/07 17:52
>>332 いいのか?(オイ
何でお礼いってるんだ?ネタか?
ってかマジに反応してる俺がバカか?
334 :
デフォルトの名無しさん:03/01/07 22:26
BM法の完全版のプログラムを教えてください
>変な用語を使う香具師だな
すびばぜん まあそんな感じということで許してください。
334 マルチ逝ってよし。
337 :
名無し@沢村:03/01/07 23:10
stdio.hってスタジオ.hと読むの?
プログラミングするための環境(スタジオ)を提供するインクルードファイル?
>>337 その通りだ。Visual Studioも同じ意味だ。
340 :
デフォルトの名無しさん:03/01/07 23:12
標準入出力(Standard I/Oの略)
名スレの予感
がしていたのに 340 のせいで台無し
342 :
デフォルトの名無しさん:03/01/07 23:15
>>340 マジで?
スタジオエイチだと思っていた
>>337 本当はアダルトサイトから流出したんだけどシンガポールで検閲が入ってつまんない内容だけが残ったのさ
cygwin / gcc で試すた
最適化の余地はかなり残っているけど、まあこれでがまんしてください。
実行の確かめには、Winの電卓を使いますた。
M_MAX * 4 桁まで計算します。それ以上になるとエラーが出ますので、増やしてください。
#include <stdio.h>
#define M_MAX (50)
#define S_MAX (100)
int main(){
int i,j;
int a[M_MAX];
for(i=0;i<M_MAX;i++)
a[i]=0;
a[0]=1;// 0! = 1
for(i=1;i<=S_MAX;i++){
int sflag=0; // 先頭の0を省くためのフラグ
for(j=0;j<M_MAX;j++)
a[j]=a[j]*i;
for(j=0;j<M_MAX;j++){
if(a[j]>10000){
if(j==M_MAX-1){
fprintf(stderr,"残念ながら桁があふれますた");
return -1;
}
a[j+1]+=a[j]/10000;
a[j] =a[j]%10000;
}
}
printf("%4d:",i);
for(j=M_MAX-1;j>=0;j--){
if(sflag==0 && a[j]==0){
// 先頭のほうの0は無視する
}else{
sflag=1; // ここから表示をはじめる
printf("%04d",a[j]);
}
}
printf("\n");
}
return 0;
}
346 :
名無し@沢村:03/01/07 23:23
>>340 標準入出力(Standard I/Oの略)?
じゃ、スタジオエイチじゃなくてスタドアイオーエイチと読めばいい?
347 :
デフォルトの名無しさん:03/01/07 23:27
>>346 エイチではありません。ヘッダといいましょう。伸ばしてもいけませんよ
ポリフェノール
349 :
名無し@沢村:03/01/07 23:34
>>347 やっぱCOM(compornent object model)をコムと読むのだから、
stdio.hはスタジオエイチと呼んでもいいような気がしてきた。
格言:略語はその略されたスペル通りに呼んでよし!!
350 :
デフォルトの名無しさん:03/01/07 23:36
読み方はそのまんまでよし
ステューディオエイチ
名無し@沢村のことは、これからはポリフェノールと呼ぶこと。
つーか、そう名乗れ。
353 :
名無し@沢村:03/01/07 23:40
漏れは「スタディオ・ヘッダ」と呼んでるよ!
stdlibは「スタディリブ」れす。
355 :
名無し@沢村:03/01/07 23:44
スペアリブ
>>355 いや、なんのことやらです。っていうかよく考えると「ヘッダ」までいうときより省略するなぁー
「エッチ」とは言わないけど
【沢村に反応してしまった人】 【糞スレを放置、徹底無視を貫き通した人】
, ・´.......... . . ...... "" '' - ..,_ . \ │ /
./::::::::::::::::::::::::/ /:::::::::::::::ヘ::::::::::::::ヽ ./ ̄\ ∩ ∧∧
. と. ,,i::::::::::::::::::::::/ /::::::::r(::::..ン::::::::::/ . ∩ ∧ ∧∩ ─( ゚ ∀ ゚ )─ \ ( ゚∀゚ )へ
<´ _;;;::::::::::::::::::::::し:::::::::::`(:::::ヘ::::::::::::\ ヽ( ゚∀゚ )/ .\_/ | /(ソ
''ヽ::::::;;;;;::::::::::::::::::::::::::::..ン:::::::;;;::-''' | 〈.. / │ \ | |
⊂;;;;;;,.:::::::.--- ー '''' ' . / /\_) / /\」
沢村と一緒に、アクセス規制! 優良コテハンとして、表彰!
糞スレを直し損ねた
ローカル関数の定義が正しくありません。とでてコンパイルできません
どういうときにこのえらーがでるのでしょうか?
ローカル関数の定義が正しくないとき。
362 :
デフォルトの名無しさん:03/01/07 23:57
PC初心者板からきました。
cppをexeにしたいのですが何を買えばいいのですか?
>>360 それだけじゃ何が起こっているのかさっぱりわからん。
コンパイラのリファレンスを見てくれ。
嫌ならせめて、エラーの再現する最低限のコードを示し、どこでそのエラーが
発生するのか伝えてくれ。
>>362 cpp単体なら、cygwinをぐぐれ!
で、gcc test.cpp -o a.exe -O3
とかやってくれ。エラーが出たらあきらめてくれ!
>>385 ×糞スレ → ○沢村
×優良コテハン → ○優良名無し
×AAズレまくり → ○直せ
ヘマばっかりしおって。ったく。
なにか?
(・∀・)ダマレッ!!
皆さんありがとうございました。
VC++.NETとかいうの買わなくていいんですね?
SDKのなかのチュートリアルをコンパイルしてみたかったんです。
で、よく読んでみるとexeではなく*.dllを作るみたいなんですが
これ以上読むと窓から飛びたくなってきますタ
dllもgccで作れるお
DTM版の房です。
最近流行のVSTプラグインを作ってみたいんですが。。。
>>371 gccですか、解りました。
頑張ってみます。
ぐは、自分で見直して「プリコンパイルってなーに?」とマジ考えてしまった……
そうだプリプロセッサだったよ…… 鬱だ……
375 :
デフォルトの名無しさん:03/01/08 01:15
アホと思われるかもしれないがCのmain()の正しい書き方は
main()
main(void)
int main()
int main(void)
void main()
void main(void)
のどれなんですか?
×アホと思われるかもしれない → ○完全なるアホ
int main(void)
または
int main(int argc, char **argv)
377 :
デフォルトの名無しさん:03/01/08 01:18
>>376 やっぱそれでいいんですね
いろんな書き方見かけるから自信なくしてますた
>>375 想定された条件下で想定通りに動作する書き方が正しい書き方。
379 :
デフォルトの名無しさん:03/01/08 01:50
>>376 処理系不明のままそこまで断言できるあんたわ天災だよ!
main()
main(void)
も正しいよ
C-FAQ くらい読んでから来ようね
>>379 アフォ。
正しいか否かとは、規格の話だから処理系は全く関係無い。
char *argv[]の方が好き。**argvと全く同じ意味だけど。
くくく。また釣られてやがるよ。
>>384 タイプ数の無駄。
int main(int ac, char**av)
これ最強。
タイプ数を減らしてもいい事は無い。
(゚Д゚)ハァ?悪影響がなければタイプ数は少ない方がいいに決まってんじゃん?
389 :
デフォルトの名無しさん:03/01/08 02:02
タイプ数増大は即ち労力の増大ナリよ
労力の増大は即ちミスの増加ナリよ
ミスの増加は即ち良くない事ナリよ
タイプ数増大は即ち労力の増大ナリよ ・・・ 間違い
労力の増大は即ちミスの増加ナリよ ・・・ 正解
ミスの増加は即ち良くない事ナリよ ・・・ 正解
タイプ数増大は良くない事ナリよ ・・・ 間違い
屁理屈を込ねるんじゃない!
僭越ながら質問です。
数学で巨大整数の素因数分解とかやる必要があってC
をちょっと始めたんですが、整数の制度がCだと10進10桁
程しかないらしく実際には100桁、あるいは200桁以上の計算をしたいのに
心配です。VISUALC++を勉強した方がよろしいでしょうか?
> 僭越ながら質問です。
僭越という言葉を使える場面じゃないぞ。
恐縮とかにしとけ。
で、長大な整数は基本的に、ほとんどの言語でサポートされていない。
多倍長整数のライブラリをどこぞで拾ってくるべし。
>>396 あんたの言うほとんど、って一体......
399 :
デフォルトの名無しさん:03/01/08 13:49
C言語で画像を表示させるには
どうしたらいいのでしょうか?
何かそういったコマンドとかありますか?
自己解決しました。
eeをつかったらできました。
403 :
デフォルトの名無しさん:03/01/08 16:58
ポインタの宣言の正しい書き方は
char *ptr;
と
char* ptr;
どちらが正しいんでしょうか?
char str[80];
strlen(str)-1;
上記のように -1 と引き算をするプログラムをよく見るのですが、
-1 とするとどのような効果が得られるのですか?
sizeof じゃなくて strlen ですか? さあ? 単にその手続き内での都合では?
>>403 char*ptr;
とか
char * ptr;
とかも書けますよ。
sizeofではないです。僕はヌル文字を引くのかと考えたのですが・・
>>407 fgets() とかで取った文字列の後尾の改行を取り除いてるのではないかな。
409 :
デフォルトの名無しさん:03/01/08 18:09
質問です。
Cってディレクトリを操作する関数は用意されてないんですか?
本屋に行ってCの本をパラパラ探しても書いてないんですよねー。
410 :
デフォルトの名無しさん:03/01/08 18:11
>>409 標準にはないよ。
UNIXならopendir,readdir,closedirなどでできるよ。
なるほど、わかりました。
UNIXプログラミングの本とかで勉強しないといけないんですね。
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を提出することがある。
質問です! 例えば
int a;
{
int a;
a++; これを外側のaに対してするにはどうしたら良いですか?
}
415 :
デフォルトの名無しさん:03/01/08 23:34
むりです
>>414 グローバル変数と同じ名前のローカル変数をつくるなよ。
というかそんなことできたんだな・・・・
面白い人ですね。あはは。
>>416 逆だな。ローカル変数と被るようなグローバル変数を作るなよ、と。
仕様でしたか・・
じゃあ同名はやめとく。 どうもでした。
>>414 int a;
{
int *b = &a;
int a;
(*b)++;
}
C++ だったらスコープ解決演算子があるが、いずれにしても int a; はマズイな。
414はグローバル変数じゃないだろ。
>>422 スコープがかぶるという意味で同じだからいいでしょ
>>420 できた〜〜あっ、でも
int *bがめんどいw
普通はスコープを隠したいから、わざわざブロックにするのではないか。
>>422 そう言われればそんな気がしないでもない。
なんと
C++なんで恐縮だけど、おもしろいこと発見した。(VC6)
int a = 0;
{
int a = a; //未初期化で警告。
int a(a); //これにするとちゃんと0が入る。
}
まあ、当たり前といえば当たり前だけど。
431 :
デフォルトの名無しさん:03/01/09 00:27
char *p="ABC";
p[1]='S';
なぜだめなの?
ほぅ。
>>431 定数"ABC"へのポインタになるんじゃなかったっけ?
>>431 文字列リテラルは書き換え不可能なテキストセグメントに格納される処理系もあるからだよ。
2chブラウザ以外からは見れないようにすれば軽くなるんじゃないの?
438 :
デフォルトの名無しさん:03/01/09 00:49
y[i++]=i;
これやると、代入してからインクリメントなんだけど、
そんなもん?
>438
不定
ひろゆきって男前だよな
とりあえず全部の板を強制IDにしてほしいな
とりあえず全部の板を強制エロにしてほしいな
>>440 なんかそのサイト、電波(トンデモ?)っぽいんですけど・・・
> 「b=b++」 は文法的にもまずいのでやはり「基礎」の部類でしょうね。
文法的はどこもおかしくない訳だが。
> n=n+1で、
> 右の計算が左に代入されるってことで、
> Cにはインクリメント演算子があるってことで、
> n=n++が基本その2だ。
> で、それを略すと
> n++
> で、もちろん、
> a=n++
> って書き方があるから、これが誤動作を起こす原因だとは思えない。
おいおいおいおいおい。
PTAが調子にのって通報しまくりそうだな
450 :
デフォルトの名無しさん:03/01/09 10:14
C言語って何に使うんでつか?
プログラムを記述するのに使います。
一次元配列dataに適当な10個のデータを入力し、それをそのまま画面に出力するプログラムを作りなさい。
453 :
デフォルトの名無しさん:03/01/09 15:17
454 :
デフォルトの名無しさん:03/01/09 16:01
>>440 > C で扱われる「文字列」の概念が理解出来ていないからだと思い
> ます。「\0」は文字列の終端を表し、それ以外の文字はたとえ自分
> が代入した憶えがなくとも文字列の一部を成します。
これって'\0'以降も文字列の一部だと言いたいのかな。配列の一部であっても文字列の一部ではないと思うけど。
へぇ、有名な人なんだ。*dget++; *dget++;なんて無駄な間接参照をする人が。
それとも意味があるのかしら。
有名な人ではなく2ちゃんねるの中のUNIX板でのみ有名な人。
世間一般には無名。
======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 ────────────────────────────
>>454 \0より後ろについて好意的に解釈すると
char str[] = "asdf\0jkl";
こうすると"asdf"と"jkl"の二つの文字列として使ったりできます、とか。
もしくは
char str[10] = "asd";
str[4] = 'f';
みたいにしても、str[5] == '\0'とは限らないので
後ろにゴミがつきます、とか。
460 :
デフォルトの名無しさん:03/01/09 20:23
Unixのシェルから実行した
int main(void)
{
…
return 0;
}
が正常終了したときに返って来る0
を利用したい場合、どのような勉強を
すればいいですか?
461 :
名無しさん@Emacs:03/01/09 20:31
>>460 何か実行したあとに
echo $?
してみそ。
% ls none_file
% echo $?
1
% ls exists_file
% echo $?
0
462 :
デフォルトの名無しさん:03/01/09 22:24
void swap_ptr(char **x,char **y);
char *s="abc";
char *ss="def";
swap_ptr(&s,&ss);
はうまくいきます。
void swap_ptr(char **x,char **y);
char s[15]="abc";
char ss[15]="def";
swap_ptr(&s,&ss);//エラー
の場合はどうすればうまくいきますか?
void swap_ptr(char (*x)[15],char (*y)[15]){}
pc3にも入れてくれ
467 :
デフォルトの名無しさん:03/01/09 23:03
>>465 てか、根本的に間違ってるんだけど、それはいいのか?
ポインタと配列の違いを勉強しましょう。
468 :
tester:03/01/09 23:08
質問。
memcmpとbcmp、intelのCPUでで動かすならどちらが処理速度は速い?
また、memcmpはもう少しだけ速くできると思うけど、
どなたか最適化してくれませんか?
469 :
デフォルトの名無しさん:03/01/09 23:43
>>468 bcmp()なんてのは標準じゃないよ。
memcmp()の高速化を聞くより、自分のやりたいことを聞け。大抵はアルゴリズムレベルで
劇的に改善できる。
470 :
tester:03/01/09 23:48
>>469 どこかアルゴリズムに関する良いサイトはありますか?
できればCPU別にどういったコーディングが効果的というシビアな考察がされているサイトなど。
私的にmemcmp()を使用している部分をまず高速化したいと思いまして。。
>>470 ネタじゃないのか?
取り敢えず本気でターゲットのCPUを絞って高速化したいのなら
使用頻度の高い関数はアセンブラで組みなはれ
それと最適化の意味を間違えてると思われるので
もう少し勉強した方が良さげ
472 :
tester:03/01/10 00:08
>>471 ええ、そこでまずmemcmp()をどなたか最適化して公開しれくれまいか?
とずうずうしいことを書いてしまっていたわけですが、
ユーザ関数の方をアセンブラ化した方が効果的なのかもしれませんね。
アセンブラは全然わかりませんが、
makeする時に*.cと同様に*.asmをmakeするだけで良いのでしょうか?
>>472 開発環境を(ry
アセンブリ言語を標準でアセンブルできるとは限らない罠。
474 :
tester:03/01/10 00:16
>>473 すみません、最終的にはVCでコーディングしたいのですが、
当面はcygwinです。
OSはwinNT4.0
CPUはセレロン500くらいです。
475 :
デフォルトの名無しさん:03/01/10 00:17
>>472 そこでまず、とか言うまえにprofilingしたのか?10%の部分を100万倍速くしたところで
1割も速くならないんだぞ。
速くしたいならコンピュータを買い換えろ。
477 :
tester:03/01/10 00:25
>>475 自分で自作memcmp()を作りましたが、処理速度約30%ダウンしました。
もちろんCで組んだので、なんとも言えませんが。
計算に1年近くかかるものなんですよ。
ですから1割なら大きいです。
>>476 会社のものなので。。
最適化と言うのはコンパイラの仕事で
C言語の範囲で各CPUに対して最適化する事は出来ない
出来るのはアルゴリズムの見直しと実装方法のみである
だから他のスレで聞いてくれ
>>477 計算にかかる1年の内、memcmp()が動いている時間は
何日分ぐらいになるんだ?
480 :
デフォルトの名無しさん:03/01/10 00:31
>>477 分からんやつだな。profilingしたのか?
10%の部分を30%速くできたとしても3%しか速くならんのだぞ?算数もできないようならヤメレ。
>>474>>477 memcmp相当ならgccからVC++に変えるだけで2割以上速くなる。
Intelのコンパイラ使えば、もっと速くなるんでは?
なので、人間のする仕事はアルゴリズムの改善。
こちらはちょっとしたことで数百倍速くなることもある。
482 :
tester:03/01/10 00:32
>>478 その通りですね。
ということはコンパイラを良いものにした方が効果的ということでしょうか?
winでしたら、何が良いのでしょうか?
自作memcmp()のソースを貼って見る事をお勧めする
484 :
デフォルトの名無しさん:03/01/10 00:35
485 :
デフォルトの名無しさん:03/01/10 00:36
計算に1年だと?そりゃまたすごいな。ちゃんとフォールトトレラントなシステムで
やってるのか?
Celeron500ならPen4 3Gにすれば2ヶ月くらいで終わるんじゃないか?
総当たりでパスワードクラックとか?
487 :
tester:03/01/10 00:41
>>479 1秒に平均30000回でしたので、
1年で約9460億ループすると思います。
処理速度が10%向上すれば331日で同結果が出せるので、
一ヶ月くらい変わってきますよね?
>>481 さっさとVCに移行した方が良さそうですね。
後はユーザ関数の見直しでしょうか。。
>>484 パッと見た目だけど境界線があってないと遅そう…
こんなスタイルになるのかな?
誰かが他の掲示板で密告→第三者が2chでスレ建て→祭り
491 :
デフォルトの名無しさん:03/01/10 00:45
>>487 1年の10%は1.2ヶ月だろ。ネタなのか?やっぱりバカだろ。
>>487 それってもっと対極的な部分で改善できない?
たとえば、バブルソートからクイックソートへ、みたいに。
対極的 > 大局的
494 :
デフォルトの名無しさん:03/01/10 00:48
>>487 testerのレベルがわからないが、プログラムの詳しい人にソースを見てもらってアドバイスをもらうのが現実的じゃないか?
1年の計算が1日ぐらいで済むかもしれない。
素人が実行に1年もかかるプログラムを書くのは問題があると思うぞ。
処理速度が10%向上するのに
365に10/11を掛けた
>>487は痛いけど
>>491はもっと痛い
496 :
tester:03/01/10 00:51
>>484 これはとても参考になります。ありがとうございました。
>>483 ソースは会社ですので、即席で思い出して書いてみました。
int mem_cmp(char *buf1, char *buf2, int len)
{
int i;
int len4;
len4 = len/4;
len4 = len4*4;
for(i=0; i<len4; i+=4){
if(*(int *)buf[i] != *(int *)buf2[i])
return(-1);
}
if(len4 != len){
for(; i<len; i++){
if(buf[i] != buf[i])
return(-1);
}
}
return(0);
}
こんな感じです。
基本的には、long型で比較し、あまった部分は1バイトずつ比較する。
この方法では遅かったです。
if()で比較してる部分で速度低下してるみたいですし、
1バイトずつ比較してる部分で更に速度低下してました。
自分ではどうしたら良いものかと。。
つかそんなに速度が重要なら最初からメモリのアラインメント調整しとけよ
500 :
デフォルトの名無しさん:03/01/10 00:56
501 :
tester:03/01/10 00:57
>>497 memcmpは大小の比較してますが、
今回私の使うプログラムでは必要ないので、それが無駄だなと思い立ったのが発端です。
比較して違ったら即-1を返す。
基本的には、比較して同じパターンが少ないので、
-1を返す方を優先としました。
502 :
デフォルトの名無しさん:03/01/10 00:57
>>501 2分探索とかハッシュとかを使って比較回数を減らすことはできないの?
ちょっとした疑問なんですけど
このmem_cmpってbuf1、buf2が4バイト境界上に無いと極端に遅くならないですか?
505 :
tester:03/01/10 01:15
>>503 データ長が奇数の場合もあるので、難しいと思います。
>>504 そうです。
極端に遅くなります。
むしろ奇数がほとんどなので、どうにか速くしたいのですが。。
>>500 memcmp()で比較を終了する位置までの平均が
極端に小さい場合や大きいと予想される場合や
その平均とオブジェクトのサイズの平均が掛け離れてる場合等は
自作の方が早くなると思う
と言っても、本当に早さが要求されるならアセンブラで書くべきだが…
507 :
tester:03/01/10 01:19
>>506 とりあえず、上記書き込みからアセンブリ言語が効果的ということは理解できました。
どうもありがとうございました。
>>505 何か
>>503に関して勘違いしているだろう。
そもそもそんなに比較しなければならないのはなぜ?
どんなアプリケーションを作ろうとしているのだ?
>>505 比較回数というよりmemcmp()の呼び出し回数という意味で
言っていました。
曖昧な言い方ですまん。
>>507 >むしろ奇数がほとんどなので
何か勘違いしてると思われ
この方法で本当に遅くなるのは1バイトずつ比較する時ではなく
buf1とbuf2のアライメントが4の倍数ではないとき
また、比較するもののサイズがある程度大きいのなら
少しアンロールすれば、それなりに早くなると思われ
511 :
デフォルトの名無しさん:03/01/10 01:32
>>508 >>そもそもそんなに比較しなければならないのはなぜ?
>>どんなアプリケーションを作ろうとしているのだ?
おれも聞きたい。
計算だけで1年かかるんでしょ。
512 :
デフォルトの名無しさん:03/01/10 01:32
>>510 そうやったところでライブラリに勝てるわけもなく…。
どうしようか悩んでいる暇があったらさっさとコンパイルして実行しろ。
>>512 そのライブラリがCのみで書かれてたら早くなるでしょう
要するに、そのライブラリの実装次第
515 :
デフォルトの名無しさん:03/01/10 01:37
516 :
デフォルトの名無しさん:03/01/10 01:38
>>514 まさかそんなこともないだろうけど、たとえCのみで書かれていたとしても503にはムリという話なんだが、。
>>515 それまでの話の流れで、この場合明らかに9/10
518 :
デフォルトの名無しさん:03/01/10 01:47
>>517 イヤイヤ、それは495はさらにイタイとと言っているワケだが…。
>>518 >>491の
>1年の10%は1.2ヶ月だろ
と言う発言は
>>487の
>一ヶ月くらい
に対する発言に見えるので
>331日
を見れば328日と答えるのが正しいと思われ
520 :
デフォルトの名無しさん:03/01/10 02:06
>>517 話の流れもなにも、速度というなら10/11だろ。
>>519 そんな細かい話カコワルイ。
まずは、がいしゅつのコンパイラを代える(intelのが良いかと)のと、より速いマシンに
代えるってのをやってみるべきだと思う。
次にやるべきことは、memcmp()の高速化なんかじゃなくて、何度も言われてるように
アルゴリズムの改善。それも「あなたが手をつけたいところ」ではなく、激しく言われているように
プロファイリングしてもっとも時間のかかっている部分を判定して、そこのアルゴリズムを改善しる。
データの大きさが奇数で困る、ってんならケツにダミーのデータでも付け加えて大きさを
そろえればいいんでないかい。当然アラインメントも揃えるべし。
memcmp()を改良して高速化するというのは恐らく無駄。それなりの処理系なら最初っから
アセンブリ言語でカリカリにチューニングしてるから。余地があるとすればデータの大きさや
アラインメントを利用した細工くらいか。
同関数もしくはその他の関数をアセンブリ言語で書くってのも、それなりの経験と技術を持って
いるのでなければやめた方がよい。最近のコンパイラは下手な人間が書くより速いコードを吐く。
bcmp()は(もし使える処理系なら)memcmp()と同じモノである可能性が高いので比べるだけ無駄。
…ところで、「10%向上すれば331日」というのが未だにどういう計算で出したのか
分からんのだが教えては貰えないか。マジで。
内容証明が来たら、名誉毀損の書き込みがあったことを知りうるでしょ、
その時点で削除しなきゃだめよ、ってことだね
>>25
金があるやつは裁判も簡単にできていいなあ。
初心者です。答教えて欲しいです。
5つの数値を入力した時に、その平均、最大値、最小値を求める
プログラムを作れ.(実数も計算できるようにする)
なお,配列,繰り返し文(3種類のうちどれか)
を使用して作成せよ.
ソースは、
528 :
デフォルトの名無しさん:03/01/10 11:07
宿題スレへどうぞ
こっちか。
他に、今、裁判中なのは何??
最高裁への上告は認められなくなったから、これで事実上判決確定だよ。
逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
532 :
デフォルトの名無しさん:03/01/10 12:43
telnetからでも操作出来るように、
Cにより、CUIでGUI風のプログラム(システム)
を作成する場合、例えば・・・
+------------------------------+
| [MENU1] |
| [MENU2] |
| (*)ITEM1 |
| EDIT1[ ] |
| |
| [CLOSE] |
+------------------------------+
MENU1、2はボタンでEnterにより、新規画面が表示
ITEM1の()はスペースキーで*がセット/アンセット
EDIT1の[]内は入力
各アイテムはカーソルキーで移動
このような、プログラムを作成したいのですが、
指針となるような本、サイトをご存じの方は
ご教授下さい。
かなり大変でしょうか?
さて、、◆oqXRTXh2QYさんの毒見が終わったようなんで、
俺も去年の餅を食ってみるか。。。
大阪キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
マンコとかきまくることは法律でも問題ないからIPなどとってくれ!!
ねえってば
>461
亀レスすいません。ありがとうございます。
lsコマンドを試してみたところ、その通りに
できました。
echo $?
の$?がよく分かりませんが調べてみます。
IPが出てますよ
>>536 スレ違いかつネタにマジレスだが、違法か合法かより、訴える奴がいるかいないかが問題だ。
マンコ書いて訴える団体はない。
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
時代は半角2次元!!
まほろたん(*´д`*)ハァハァ
ひろゆきは自宅に押しかけた暴走族に土下座した人だよ。
暴力団に脅されたら山奥に連れ出されるまでもなく玄関先で二つ返事で請け負うんじゃない?
権力には抵抗するけど、暴力には滅法弱い、それがわれらのひろゆき
10%速度向上の場合、もとの期間に 10/11 をかけたものが答え、でよいのだが。
たとえば10の仕事を1の速度で実行すると、10の時間がかかる。
10%向上して1.1の速度で実行すると、10->9ではなく9.090909...となる。
つまりもとの期間の 10:9.09 = 11:10 -> 10/11 になる。
はどこで叩かれた有名人さんだろう?
■ライブアライブの巻■
======2==C==H======================================================
2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
さておき、1/11ですが、2002/10/30にリリースされた『黒イジワルケイ』に参加したアーティストと、
2ちゃんねるで募集したバンドというよくわからない対バンのイベントがありますです。
http://marmalade.skippy.co.jp/event/live.html *******************
高田馬場AREA 午後6時入場受付開始
当日券のみ開場にて!3,000円 (別途ドリンクチャージ500円)
547 :
デフォルトの名無しさん:03/01/11 18:15
からあげ
548 :
デフォルトの名無しさん:03/01/11 18:55
conioのヘッダーのあるフリーのコンパイラを知ってる人いたら教えてください。
clrscrを使いたいんですけど、それに代わるプログラムの作り方が
わからないので、どうすることもできません。
ボーランドのフリーのC++コンパイラにはないの?
>>543 権力にもあっさりと屈服するじゃん w
警察や裁判所にはいっさい抵抗せずログを見せちゃうし。
551 :
デフォルトの名無しさん:03/01/11 19:31
>>549 それでやっても定義されてないっていうエラーが出ます。
>>551 stdio.hとかはインクルードできるの?
554 :
デフォルトの名無しさん:03/01/11 21:17
円周率をモンテカルロ法で求めようとして、下のプログラムを作ったのですが、家のパソコンでは上手く表示されるのに
学校のパソコンでは「セグメントエラー」と出てしまいます。(汗)
原因が分かる人は教えてください。m(_ _)m
#include <stdio.h> #include <stdlib.h> #include <math.h>
#define rnd() (1.0 / (32767.0 + 1.0)) * rand()/*0から1までの乱数*/
#define n 5000000 /*試行回数*/
#define BETTER 129 /*乱数を配列に登録する数*/
double pool[BETTER];
void first_better_rnd(void)/*まず乱数を配列に登録*/
{ int i;
for(i = 0; i < BETTER; i++){pool[i] = rnd();} }
double better_rnd(void)/*出来た乱数の配列のiを適当に変えて、そこにまた乱数を入れる*/
{ int i =(int) BETTER / 3 ; double r; i = (int)(BETTER / pool[i]);
i = i - 1 ; r = pool[i]; pool[i] = rnd(); return r; }
int main()/*モンテカルロ(当たり外れ)法*/
{ int i, h; double x, y, p; h = 0;
for(i = 0; i < n; i++){ x = better_rnd(); y = better_rnd();
if(y < sqrt(1 - x*x)) h++; }
p =(double) h / n; /*4分円に入る確率がπ/4である事を利用している。*/
printf("円周率 = %Lf \n", 4 * p); return(0); }
改行の関係で読みにくいです。すいません。
556 :
デフォルトの名無しさん:03/01/11 21:21
配列の要素数っていくつまでなら可能なんですか?
557 :
デフォルトの名無しさん:03/01/11 21:22
>>556 普通のコンパイラなら2^32-1までじゃないかな。
558 :
デフォルトの名無しさん:03/01/11 22:03
first_better_rnd()ってどこから呼ばれてるの?
>>557 さて、64bitCPUでも引き合いに出そうと思うがどうか。
>>554 gccでコンパイルして動かしてみたら、
Segmentation faultが発生した。
円周率を表示するところを Lf → f にしたら、
発生しなくなった。
でもこれ結果が0とか表示されるけどあってるの?
>>561 そりゃ円周率が0ではない。
プログラム中に間違いがある。rnd()がおかしい。
宿題スレに誘導した方が良くないか?円周率知らない専門学校生だぞ?
えんしゅうりつは3だよ〜
ぼくがっこうでならったもん!
#include <stdio.h>
void main(void){printf("円周率 = およそ3\n");}
今作り変えてみました。gcc持っている人は誰か動作確認してやって
ください・・・。
#include <stdio.h>
#include <stdlib.h>
double random2( void )
{ return (1.0 / (RAND_MAX + 1.0)) * rand();}
int main()
{ int i, j, c; srand( 1 );
for( j = 0; j < 5; j++ ){
for( c = 0, i = 0; i < 1000000; i++ ){
double x = random2();
double y = random2();
if( (x * x + y * y) < 1.0 ) c++;
}
printf("%g\n", ((double)c / i) * 4 );
}
return 0;}
自称女子中学生の方にセクハラ発言はセーフですか?
2chで告知するかどうかを知ることで?(^_^;)なんでそうなるんだ?
そりゃそうだ(^_^;)まあハッキングと強盗は区別するってことで
20レス分くらい読めよ(^_^;)
どこまでOKなのかわかってたら訴訟で負けたりしません(^_^;)
なるほど(^_^;)
>>566 ところで、そっちではうまく動いてるの?
家のだと上手くいっています。(.NET Framework SDK)
ただ、学校のはgccなので上手くいくか分かりません。
>>566 >srand( 1 );
話聞いてなかったんだけど乱数固定したいの?
572 :
デフォルトの名無しさん:03/01/12 00:13
>>566 RAND_MAX - 1 じゃないのか?まぁあまり変わらんが。
あと <1.0じゃなくて<=1.0だし。
>>566 素直にxとyはrand()の返り値にして
((double)RAND_MAX)の2乗と比較した方が良さげ
unixでは#include<conio.h>でgetche();などはちゃんと機能しますか?
どなたか教えてください。
・・・2ちゃんねるの時代も終わりに近づいてる・・・
ご愛嬌・・・
被害の大きさに差がありそうだけども。
誹謗中傷一番垂れ流しってどこかねぇ?
577 :
デフォルトの名無しさん:03/01/12 02:36
>>574 単純なプログラム以外はOSごとに違うライブラリを使用するのがC言語だ。
犯人のトリップで書き子したやつは警察にログが行ってます
580 :
デフォルトの名無しさん:03/01/12 11:49
>>574 漏れの知る限りDOS系だけだ
UNIXでどうするかは↓が解りやすいと思う
三木英正/塩谷修著『実用UNIXシステムプログラミング第2版』日刊工業新聞社,237ページ
581 :
デフォルトの名無しさん:03/01/12 13:28
コンパイラはBorland何だけど、インクルードファイルが使えません。
Error E2209 milk.c 6: Unable to open include file 'stdio.h'
Warning W8065: Call to function 'fprintf' with no prototype in function main
教えてくださいませ。(^。^/)ウフッ
環境変数
583 :
デフォルトの名無しさん:03/01/12 13:39
>>582 コンパイルする時は「bcc32 ファイル名」だけで逝けます。
ってことは環境変数設定できてるってことじゃないの?
>>581 bcc32.cfgが無い、あるいは内容が間違っている。
585 :
デフォルトの名無しさん:03/01/12 13:42
C:\Borland\BCC55\Bin
↑に設定していますが。
インクルードファイルがC:\Borland\BCC55に入ってるのはどういうこと?
C:\Borland\BCC55←にも設定しなくちゃならないの?
まさか。(^^ゞ
-I"C:\Borland\BCC55\include"
-L"C:\Borland\BCC55\lib"
587 :
デフォルトの名無しさん:03/01/12 13:50
>>587 >>586の内容をbcc32.cfgに入れて、C:\Borland\BCC55\binに置く。以上。
589 :
デフォルトの名無しさん:03/01/12 14:01
>>588 あっそうか。それやんの忘れとった。スマンスマン(^.^)ノ
いやー、年取ると頭がはたらかんのですわ。いんぽでもなー。
がんがれよ、これからのにっぽんはきミらわかもんの時代やでー。
>>589 ついでにもう一つ。
-L"C:\Borland\BCC55\lib"
この一行をilink32.cfgに入れて、bcc32.cfgと同じディレクトリに置く。
これを忘れるとリンクできない。
classと構造体ってどう違うの?
>>591 デフォルトがprivateかpublicかって・・・C関係ないじゃん
( ´_ゝ`)フーン
>>585 readmeは読みましょう^^;;;;;
おれも
#cMlzzMPq
unixでCを組むとき、gets();というのはありますか?
ニヤ(・∀・)ニヤ
599 :
デフォルトの名無しさん:03/01/12 21:18
配列の添え字範囲を実行後に宣言するのはどうすたらいいの?
つまり、a[m][n]のm,nはデータを読んでからじゃないと決まらないとき。
>>597 g++レベルで警告を出してくれるかわいい関数だ。
601 :
名無し@沢村:03/01/12 21:28
>>599 >a[m][n]のm,nはデータを読んでからじゃないと決まらないとき
ってどんなときよ?そんなときがあるのか?
そのデータがまともな形式のものならデータ長を格納してある場所があるはずだから、まずそれを読んでからm,nの長さを動的に確保しろ。
そのデータがファイルならファイルサイズからm,nを割り出せ。
頑張れ!!
602 :
デフォルトの名無しさん:03/01/12 21:35
>>601 データを読んでからじゃないと決まらないなんていくらでもあると思うが。
>>602 たとえばJavaなんて糞言語つかってて、Stream経由でしか読めないとき。
604 :
デフォルトの名無しさん:03/01/12 21:40
>>603 ?
普通にファイルからデータを読み込むとかDBからデータを取得するとか
いくらでもあると思うが。
605 :
名無し@沢村:03/01/12 21:43
>>599 ヌヒよ、わかったぞ!!
データを読むのにa[m][n]と2次元配列が必要ということは、そのデータはいくつかにブロック化されているな?
ヌヒよ、そういうブロック化されてデータというのはまともなデータだから安心していいぞ!!
まずそのデータには最初のところにデータ全体に対するインフォメーションが記述されているから、そこを読め!!
たいがいはそこにブロックの数と全体のデータ長が書いてあるよ。ブロックの数は必ず書いてある。
全体のデータ長は書いてあるかもしれないし、書いてないかもしれない。
だが、もし書いてなかったとしても各ブロックの先頭には必ずブロックごとのブロックサイズが書いてあるから安心しろ。
ヌヒよ、それらを読めばm,nがわかるからそれらを元にデータを読め。
頑張れ!!
606 :
デフォルトの名無しさん:03/01/12 22:00
>>605 599だが、いろいろサンクス。
しかし、漏れの言ってるのはもっと低レベルの質問。
多次元の配列の添え字範囲を動的にするにはどうしたらいいのだ?
という初歩的疑問。一次元ならわかるのだが。
>>606 (ポインタとか知らないんだろうなぁ・・・)Oo(´ゝ`)
609 :
名無し@沢村:03/01/12 22:10
>>606 ヌヒよ、ヌヒのいわんとしてることは単に多次元配列の動的確保のことか?
1次元と全く同じだが、わからんか?
ヌヒよ、1次元の場合は、
a=(unsigned char*)malloc(n+1);
と確保するだろ?
2次元の場合も、
a[n]=(unsigned char*)malloc(m[n]+1);
で良いが、こういう意味なのか?
arr[x + y * width]でしのげ。
611 :
デフォルトの名無しさん:03/01/12 22:17
>>609 599だが、サンクス。そういうことです。
プログラミング初心者なのでアフォな質問許してくれ。
612 :
デフォルトの名無しさん:03/01/12 22:17
613 :
デフォルトの名無しさん:03/01/12 22:19
>>610 それは考えたが、3次元、4次元になると収拾がつかないと思た。
by599
>>613 お前は視覚イメージがないとコードが書けないのか?
>>614 以前にポインタわかってないので・・・。
616 :
デフォルトの名無しさん:03/01/12 22:32
初心者質問なんですが
配列の中に1が来るまでそれまでを0にするループを作りたいんですけど
while(hairetu[i] == 0 ){
hairetu[i] = 0;
i++;
}
で、実行エラーがでます。
どうすればいいか誰か教えてください。
617 :
デフォルトの名無しさん:03/01/12 22:34
>>616 それじゃ1がくるまでじゃなくて0の間だぞ。
sentinelとして配列の上限に0以外を入れとけ。
618 :
デフォルトの名無しさん:03/01/12 22:34
>>616 1が来るまでならwhile(hairetu[i]!=1)だと思うけど・・・
>>616 for使え
デバッガ使え
1が来ない可能性を考えろ
まちがえました
while((TMP[i]) == 1 ){
TMP[i] = 0;
i++;
}
これで、エラーがでます。すいません。
621 :
デフォルトの名無しさん:03/01/12 22:37
>>620 お前は今持ってる参考書を30回読み直せ。
はい、次。
とりあえず、forでやったらできました。
以上です。
625 :
デフォルトの名無しさん:03/01/12 23:33
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
intmain(void)
{
int add = 0;
int num = 1;
printf("数字を入力してください:");
scanf("%d", &add);
puts("1から100までの等差数列");
for( ; num <= 100; num += add) {
printf("%d ", num);
}
printf("\n1から100までの等比数列を表示します。\n");
for( ; ; ) {
if(kbhit()) {
num = 1;
for( ; num <= 100; num *= add) {
printf("%d ", num);
}
break;
}
}
printf("\n終了します。よろしいですか?\n");
for( ; ; ) {
if(kbhit()) {
printf("\n終了しました。\n");
break;
}
}
scanf("%d", &num);
return(0);
}
1:数字(公差)を入力して等差数列を表示
2:等比数列出力メッセージを表示。(キー入力待ち)
3:キー入力後、等比数列表示。
4:終了確認メッセージを表示。(キー入力待ち)
5:キー入力後、終了メッセージ表示。
としたいんですが、2番目のキー入力待ちでキーボードからキーを1回押すと、
一気に最後までいってしまいます。4番のキー入力待ちのところでとまってくれません。
どうしてでしょうか?(kbhit()の使い方が間違ってます?)
離すのが遅い!
>>626 kbhitはキーボードバッファからの一文字読み込み。
なのでキーボードバッファに残ってると止まらず逝ってしまう。
629 :
デフォルトの名無しさん:03/01/12 23:39
Fatal: ファイル C0X32.OBJ が開けません
って何?
630 :
デフォルトの名無しさん:03/01/12 23:40
>>626 てか、kbhit()なんて使わんよーに。
scanf()は標準だけど使わないよーに。
とりあえずgets(), sscanf(), getchar()で。
631 :
デフォルトの名無しさん:03/01/12 23:42
あ、gets()もバッファオーバーフロー攻撃あるからfgets()で。
632 :
デフォルトの名無しさん:03/01/12 23:46
みなさん、レスありがとうございます!
kbhit()は使うなとのことですが、hbhit()の使い方のところなんで。。。
>>628さんが言ってるのが原因みたいですね。
scanf()避ける奴はチキン野郎
たびたび質問ですいませんが、そのkbhit()でキーボードバッファを
解放(?初期化っていうのかな?)するのはどうしたらいいんでつか?
636 :
デフォルトの名無しさん:03/01/12 23:52
asdfg と入力してアルファベット順に出力したいんですが
どうソートすればいいんですか?
637 :
デフォルトの名無しさん:03/01/12 23:57
>>633 getchar()じゃだめなのか?
どーしてもkbhit()つかいたいんなら
while (!kbhit()); getch();
>>636 普通ソートと言えば辞書順だが、何が聞きたいんだ?
qsort()使え。
638 :
デフォルトの名無しさん:03/01/13 00:00
おまいら質問する時は具体的に書け
俺たちはおまいらの脳内スレにアクセスする権限がないのだから
639 :
デフォルトの名無しさん:03/01/13 00:02
>>638 権限は関係ないが、手段がないのが問題だ。
640 :
デフォルトの名無しさん:03/01/13 00:06
人に分かるように質問する
これもまた勉強なり
641 :
デフォルトの名無しさん:03/01/13 00:11
>>637 うーむ、kbhit()なんて20年近く前なんで仕様が分からんのだが、
while (!kbhit()); while (kbhit()) getch();
とかしないといけないのか?
642 :
デフォルトの名無しさん:03/01/13 00:19
error C2297: '*' : 不正な右オペランドです。
というエラーは何が原因でしょうか?
644 :
デフォルトの名無しさん:03/01/13 00:21
>>642 右オペランドが不正なのが原因だろが。
教えて欲しかったらソースも書け。
645 :
デフォルトの名無しさん:03/01/13 00:25
>>644 pDC->TextOut(x * TextWidth * 3, y, cData);
よろしくお願いします
646 :
デフォルトの名無しさん:03/01/13 00:32
647 :
デフォルトの名無しさん:03/01/13 00:34
本に宣言がメンバ関数と書いてたのでそのまま定義したのですが、
メンバ変数にすると直りました。
x * TextWidth * 3
が負?
とりあえず、getch()にしたら思い通りにできました。
レスくれたみなさんありがとうございました。
今はあまりつかわれないみたいなkbhit()ですか、バッファの件、勉強になりますた。
650 :
デフォルトの名無しさん:03/01/13 00:48
動的な線形リスト作ってるんですけど
挿入ソートが出来ないです。
単方向だときついですかね?
651 :
デフォルトの名無しさん:03/01/13 00:50
>>650 挿入する時にソートするだけなら単方向でなんの問題もないと思うが。
1年生の基礎だな。
やっぱり、入れ替えが上手く出来てないだけかな・・・
もうちょい考えて本当にダメっぽかったらまた質問します。
文字列の先頭アドレスを受け取り,文字列内の文字を昇順にするのはどうすりゃいいですか?
654 :
デフォルトの名無しさん:03/01/13 01:11
>>653 漠然としてるな。ソートすればいい、じゃだめ?
だからマニュアルのqsort()の所をミロってば。
>>138 まぁるぅちぃぃだいすき
p=str;
l=strlen();
for(i=0;i<l-1;i++)
for(j=i+1;j<l;j++)
・・・
うーん、やっぱりきついかも・・・
入力終わってから全部一気にソートしようと思ってるんですけど、
出来ないなら、逐次挿入ソートの方が良いですかね・・・?
>657
例えば、注目しているセルを指すポインタをpとして、
pの一つ前の状態を保存しておくポインタqを使ってもできないの?
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int num;
printf("何かキーを入力してください。");
scanf("%d", &num);
if(isalpha(num)) puts("アルファベットです。%sですね。", num);
if(isdigit(num)) puts("数字です。%dですね。", num);
if(!isalnum(num)) puts("記号ですか?");
return (0);
}
とっても基本的なことですがよくわかりません。
キーボードから数字を入力しても、「記号ですか?」になってしまいます。
このプログラムを完璧に動かすにはどうなおしたらいいですか?
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int num;
printf("何かキーを入力してください。");
scanf("%d", &num);
if(isalpha(num)) printf("アルファベットです。%sですね。", num);
if(isdigit(num)) printf("数字です。%dですね。", num);
if(!isalnum(num)) puts("記号ですか?");
return (0);
}
修正。はずかしい。。。
661 :
デフォルトの名無しさん:03/01/13 02:38
ほいよ。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int num;
printf("何かキーを入力してください。");
scanf("%d", &num);
if(isalpha(num)) printf("アルファベットです。%cですね。\n", num);
if(isdigit(num)) printf("数字です。%cですね。\n", num);
if(!isalnum(num)) puts("記号ですか?");
return (0);
}
663 :
デフォルトの名無しさん:03/01/13 02:47
二つのプログラムを同時に動かして、
プログラム間でデータをやりとりする方法を教えてください。
ただしファイルを使わない方法です。
OSはUNIX系です。
サーバ・クライアント方式っていうんですかね、こういうのは。
665 :
デフォルトの名無しさん:03/01/13 03:03
>>662 きちんとと動いているが。
まさかEBSDICなのか?
C:\tmp> a
何かキーを入力してください。97
アルファベットです。aですね。
C:\tmp> a
何かキーを入力してください。48
数字です。0ですね。
c:\tmp>
666 :
デフォルトの名無しさん:03/01/13 03:05
>>664 同じマシンの上なら共有メモリ。
pipe、socketなんかでも検索してみろ。
クライアントサーバかどうかは関係ない。もう1つ上のレベルの話だ。
667 :
名無し募集中。。。:03/01/13 03:40
検索の仕方が悪いのか見つからないんですが、
Cでプログラムをnミリ秒停止させる命令ってなんですか?
一番、単純なやつお願いします。
668 :
デフォルトの名無しさん:03/01/13 03:40
キーボードから押されたキー(数字、アルファベット、記号)によって
動作を分けたいんですが、どうしたらいいんですか?
int i;
printf("キー入力:");
scanf("%d", &i);
数字はたとえば0を押したら、10進数で読み込んだiには0が格納?
アスキーコードをしらべたら、10進数の0にあたるのはNullだって書いてあるし。
アルファベットや記号はどうなっちゃうの?
669 :
デフォルトの名無しさん:03/01/13 03:45
>>668 どうぞ。文字と文字コードの区別を勉強するように。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
int num;
printf("何かキーを入力してください。");
num = getchar();
if(isalpha(num)) printf("アルファベットです。%cですね。\n", num);
if(isdigit(num)) printf("数字です。%cですね。\n", num);
if(!isalnum(num)) puts("記号ですか?");
return (0);
}
>>669さん
おぉ。できました。どうもありがとう。
文字と文字コードの違いですか。全然自覚してませんでした。
これからちゃんと勉強して、違いをよく認識します。
どっかいいサイトありますかねぇ。自分でも調べてみます。
671 :
デフォルトの名無しさん:03/01/13 04:51
VisualC++、MFCについての質問です。
親と、子(ダイアログ)で、WM_NOTIFY のメッセージを
転送しているのですが、上手くいきません。
// 子ダイアログ
static NMHDR nmh;
memset(&nmh, 0, sizeof(nmh));
nmh.hwndFrom= GetSafeHwnd();
nmh.idFrom= GetDlgCtrlID();
nmh.code= NM_CLICK;
GetParent()->PostMessage(WM_NOTIFY, (WPARAM)nmh.idFrom, (LPARAM) &nmh);
// 親ウインドウ
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
//}}AFX_MSG_MAP
ON_NOTIFY(NM_CLICK, IDD_LOGIN, OnNotifyTest)
void CMainFrame::OnNotifyTest(NMHDR* pNMHDR, LRESULT* pResult)
{
MessageBox("OK");
*pResult = 0;
}
ご教授お願いします。
672 :
デフォルトの名無しさん:03/01/13 05:18
n×nのマトリックスの各行、各列の平均を求めるのにどっち使う?
その1
for(i=0;i<n;i++)for(j=0;j<n;j++)mean[i]+=x[i][j]/n;
for(j=0;j<n;j++)for(i=0;i<n;i++)mean[j]+=x[i][j]/n;
その2
for(i=0;i<n;i++)for(j=0;j<n;j++){
mean[i]+=x[i][j]/n;mean[j]+=x[j][i]/n;
}
どちらかといえば2の方だけど、計算精度的にも計算量的にも
ループ内の除算は減らしたいトコロ。
ていうか、行と列の平均に同じmeanを使うのヤメレ。
ポインタを使った関数への参照渡しについては散々Cの入門書に
出てくるんだけど、そこからさらに下の関数に渡すにはどうやれ
ばいいんでしょ?
関数1-(参照渡し)->関数2-(参照渡し)->関数3(内容変更)
で、関数1の変数の変更がかかっていればいいんですが。
下のような感じ。
void setset(ここの指定の仕方)
{aに代入する書き方; }
void set(int *a, char str[])
{setset(ここの指定の仕方); }
int main(void)
{int a;
a = 0;
set(&a);
return 0; }
ポインタがまだよく分かってないんだろな、
知ってる人にはなんでもないことなんだろうけど(´Д`;)
>>671 SendMessageしてみれば?
>>672 処理が実質的に同じなら、2の方がパイプラインに乗るんでないかな。
676 :
デフォルトの名無しさん:03/01/13 08:12
ちょっと確認したいんですが、
struct passwd *getpwnam(const char * name)
のようなある特定のポインタを返す関数は、
上の関数の例で言えば、
passwd 構造体のサイズのメモリを関数内で確保してそのアドレスを
返していると理解していいのでしょうか?
>674
微妙にsetの宣言と使用がちぐはぐなのが気になるけど。
void setset( int *a)
{ *a = 33 ; }
void set(int*a)
{setset(a);}
>676
メモリを確保する場合もあるし、static/globalな変数へのポインタが
帰ってくる場合もある。ドキュメント/ソースを読むしかなかろう。
218.145.25.77:80
218.145.25.14:80
50.51.32.202.ts.2iij.net:80
cache146.156ce.scvmaxonline.com.sg:8080
cache50.156ce.scvmaxonline.com.sg:8080
12.119.64.42:80
ce590-gdl01.terra.net.mx:80
seton03.terra.net.mx:80
218.65.110.14:80
ce590-gdl02.terra.net.mx:80
>>677 なるほど、よくわかりました。どうもです。
>>676>>679 fopen/fcloseのように解放専用の関数が用意されている関数以外は動的確保はしていないと思うよ。
標準関数でいえばlocaltimeなんかはstatic変数を使っているね。
681 :
名無しさん@3周年:03/01/13 10:23
>667
Javaならsleep(n);だけど、Cだとなんだっけ?
>>667 標準ライブラリには無いだろ。
大体1msのウェイトが出来るかどうか環境依存なんだから。
C汎用にしたければループで時間待ち汁。
UNIX系だと、
sleep(n); で秒単位、usleep(n);でマイクロ秒単位、だったかな。
でも何も細工していないLinuxだったりすると最低で10mS単位らしい・・・。
usleep(1); と書いても10mS休む。
684 :
デフォルトの名無しさん:03/01/13 12:02
文字列と文字を入力させいくつ入力した文字が文字列に含まれてるか
カウントしたいんですが教えてください
実はソートは比較しながらforや一時保管領域を使うのしかわからんのですが
これではできませんかね?
686 :
デフォルトの名無しさん:03/01/13 12:16
>>685 全てのソートはそれで可能だが、何が問題なんだ?
687 :
デフォルトの名無しさん:03/01/13 12:39
int *pi はint型データへのポインタです。それならば、
int* pi と書くのが正しいと思います。
piの型がint型へのポインタ型ですから、int*と表現できる。
では、なぜ、原書も含めて、
はじめのほうの書き方が主流なのですか?
とても、不思議です。
>>687 大人の都合なので無視してください。
でも、こんなことできなかったっけ?
int i.*p;
>>687 そう考えるのももっともだけど
int* a, b;と書くとCでは
int* a; int b;となるのでバグを防ぐためにも
int *a, *b;と書くのが主流。
だからといってpintなんてtypedefすると
煙たがられるので素直に郷に入っとけ。
691 :
デフォルトの名無しさん:03/01/13 13:06
C言語、名前に興味があるので学習しようとおもっていますが、
実際問題、C言語で具体的には何が出来ますか?
ウィンドウズでも可ですか?
692 :
デフォルトの名無しさん:03/01/13 13:10
>>691 Windowsでまともに作れるのはコマンドラインの小物ツールと
DirectXを使ったゲームくらい。
GUIなアプリにははっきり言って向かないし
上記のアプリの開発効率もよくない(といか最悪)。
Windowsとはあまり相性の良くない言語ですな。
>>693 CでWindowsアプリをまともに作れなかった人
>>691 >実際問題、C言語で具体的には何が出来ますか?
文字ベースのHello Worldから,グラフィック編集,ワープロ,データベース,通信,
更にはデバイスドライバを作るときの基礎技術の1つにもなるyo
>ウィンドウズでも可ですか?
もちろん
だれか言ってた台詞だが
今のスキルがゼロなら何をやってもプラスになる
がんがれ!
本来こういう言い方は好まないが
>>693は悪質なネタ
DirectXはC++ベースだし
GUIに向くかどうかは根拠を示さない限り単なる主観
開発【効率】が悪いのは当人の無能の証明
Windowsとの相性に至ってはWin32 APIがCベース
>>693 むしろWindowsAPIはC言語用に設計されていると言ってしまっても過言ではないのに・・・。
>GUIに向くかどうかは根拠を示さない限り単なる主観
これはあまりに無茶な主張だよ。向かないのは明らかだろう。
Window一枚開いてボタンを配置してボタンが押されたら
"hello,world"と表示するソースコードを
>>691に示して上げなよ。
たぶん一目散に逃げ出すから。
>>698 C++だってMFCなりOWLが無ければ同じ手順を踏むんですが・・・。
DelphiだってVCLが無ければ同様。
この際VBは異常と考えるべき。裏では同じ事をしているが。
何もわかってらっしゃらない?
>>699 Delphiの場合はメッセージディスパッチが言語仕様にあるから
他の言語より少しだけスッキリするよ。
もしかして、わかってらっしゃらない?
>>700 アレってTWinControl継承してるクラスのメソッド以外にも使えるの?
>>701 そうだよ。 TObject継承なら使える=クラスなら使える
>>699 お前はライブラリや開発環境や向き不向きや開発効率を一切無視して
単にDLL叩けば(理屈上)何でもできると言ってるだけだろ。
それが初学者の
>>691に対する適切な回答かってことだよ。
>>691 純粋にC言語の勉強をしたければWindows上でもまったく問題ない。
その知識が実際に役に立つ可能性は十分ある。
が、Windowsでアプリケーションを作るのが目的でC言語を覚えるのだとしたら
それが開発効率の点で「最善」の選択でない可能性が高いので
目的にあった言語を慎重に検討したほうがいい。たとえ趣味でもね。
>>702 TObjectにHandleプロパティなんかあったっけか?
純粋なCってなんだろう・・・。
stdと名の付くヘッダすらない処理系も普通に存在するわけで・・・。
int main()
{
int a;
a = a + 3;
return 0;
}
これくらいしか書けんが。
>>706 ほら、実質VCLであるTWinControl以上でしか使えないんじゃん。
>>707 ああ、もう、イライラする。コード書いてやるから どっかDelphiスレにこいや!
>>708 指定出来ると実際に機能する。は違うぞ。
基本選択法を用いて文字型配列の先頭アドレスを受け取り、文字列内の文字を
昇順にソートする関数を作れ。表示処理はmain()でというんですが教えてください。
自作関数でソートするのがわかりません。
(^^)
>>698=
>>693?
ネタじゃなく真面目な主張だったのか?
だったら内容はともかくネタと決めつけたのは無礼であった
すまなかった
で,本題
おまえさんはもしかしてGUI【入門】に向かないと言いたかったのか?
だったら異論はないぜ
>実際問題、C言語で具体的には何が出来ますか?
という問いに対して
>GUIなアプリにははっきり言って向かないし
と答えていたので
できることが少ないと答えているように見えたのだ
GUI入門に向くかどうかはともかくとして
メッセージループとswitchを自分で書いたりGCがない等の特徴は
Cが嫌いな人がよく持ち出す話だが
これはCの存在理由でもあり
そういうことを憶えることこそCを学ぶ意義でもある
と洩れは思う
>>691がC言語に関心を持つようになったのも
雑誌などの記事を見ていて何となく
中心的な役割を果たしているような気がしたのだろうと推察しているが
Cがそのような使われ方をする理由も同じところにある
そのような入門者には勧めてもよいのではなかろうか
714 :
デフォルトの名無しさん:03/01/13 20:13
今日C言語始めました。カレンダー表示するプログラムで
#include <stdio.h>
void main()
{
int dd;
printf("Sun Mon Tue Wed Thr Fri Sat\n");
for (dd = 0; dd < 31; dd++)
{
printf("%3d",dd+1);
if ((dd % 7 ) == 6)
printf("\n");
}
printf("\n");
}
このソースをコンパイルすると
エラー E2380 calender01.c 15:文字列または文字定数が閉じていない(関数 main)
エラー E2121 calender01.c 16:関数呼び出しに)がない(関数 main)
とでます。ご教授お願いいたします。
>>714 普通に通るが?
エラーメッセージからしてBorland-C++だと思うが、”に全角文字を使ってたり
しない?
VisualC++では教えてもらえませんか?
>716
ゲームのアルゴリズムだったら聞いても無駄だぞ
しかもC++とか関係ないだろ
ゲームスレへどうぞ
>>715 レスありがとうございます。
確認しましたが、全角文字は使ってなかったです。
なぜ通らないんでしょ・・・
コンパイラーの設定とか関係ありますかね?
>>715 大変申し訳ありません><
最後の「"」が1個抜けていました;;
ほんとにご迷惑おかけしました・・・
>>718 おまえさんが714にコピペしたのはメモ帳からか?
だとしたら[ファイル(F)]-[上書き保存(S)]せずにコンパイルしてたってオチかも知れんぞ
>>719 コンパイルエラーの98%は書きミスだ。自分で直せて当然。二度と来ないようにな。
実行時エラーならなんぼでも相手してやるから。
>>718 コピペではなかったのでこちらの掲示板と
自分のエディタの違ってたんですね。
"\n" が "\n になっていました。
>>719 了解しました。
今日が初めてだったので、あたふたしてたのかもしれません。
723 :
デフォルトの名無しさん:03/01/13 22:35
#include <stdio.h>
int main(void)
{
char ch[9];
printf("8文字以内でパスワードを入力してください:");
gets(ch);
printf("%sでよろしいですか?\n" ,ch);
return 0;
}
8文字以内でパスワードを入力してもらい、確認メッセージを表示するものです。
ここで8文字以上入力されないように、もし8文字入力されたら自動的に確認メッセージ
のところにすすませたいのですが、どのようにしたらいけますか?
教えてください。全然わかりません。
getchar() を使おう
>>723 標準ライブラリの範囲内ではできません。
>>725 えぇ〜できないんですか。なんとか。。。
>>724 getchar()ですか。getchar()をどう使えばできますか?ソースお願いします。
自分でももう少し考えてみます。
727 :
デフォルトの名無しさん:03/01/13 22:45
>>723 もっとchを大きく確保しておいて文字を勘定したらいいじゃん。
>>727 ループを使ってgetchar()で一文字ずつchに読み込んで、同時に文字数を勘定して、
文字数が8になったらループを抜けて、printf()にいけばいいのかな。
あ!でもそうすると、例えば4文字しか入力しないでエンター押してprintf()に行けるかな?
頭のなか混乱でつ。(泣
あ、ごめん。getchar 使おうがキー入力をリアルタイムで取得はできないね。
OS や処理系によって違うからのマニュアル読んで探して。
730 :
デフォルトの名無しさん:03/01/13 22:56
>>723 標準の範囲では普通行バッファリングされるからできないんだよ。
それに8文字入れたら勝手にすすむのもユーザーインターフェース的にどうかとも思うし。
これじゃだめ?#include <stdio.h>
int main()
{
char pw[8 + 1];
fgets(pw, sizeof(pw), stdin);
printf("%s\n", pw);
}
>>730 レスどうもありがとう。
それも考えました。9文字以上入力されると、8文字目まで表示ですよね。
ちょっとやりたいことと違うんで。。。すいません。
やっぱ無理なのかなぁ。
>>723 > パスワードを入力してもらい
キーエコーが返ってしまう (打った文字がすぐ画面に出る) 時点で、標準入出力
ではダメだろ。
>>723 > もし8文字入力されたら自動的に確認メッセージ
> のところにすすませたいのですが、
これはやめた方がいいと思うんだけど。
とりあえず入力させて長すぎたらもう一度入力させた方がいいと思う。
>>731 いや、環境を限定してくれればできるんだけど、標準ではムリって話だ。
>>732 意味も分からんのに反応するなって。
>>735 それくらい9と書いても問題ないだろ
普通は#define BUFSIZE 9とでもするんだろうが。
737 :
デフォルトの名無しさん:03/01/13 23:12
>>733 標準入力でもioctlすればエコーなしバッファリングなしとかできるんだがな。
>>736 しねーよ。
するだろ。BUFSIZEはいみふめだが。
なんか荒れちゃってますね。
環境は、WindowsでVC++6.0です。
だれか作って〜(泣
741 :
デフォルトの名無しさん:03/01/13 23:16
>>740 > もし8文字入力されたら自動的に確認メッセージ
> のところにすすませたいのですが、
使いにくいと思わない?
「自動的に」ならgetchでも使わないとできないんじゃないの?
743 :
デフォルトの名無しさん:03/01/13 23:18
>>738,738
3行のプログラムにそんなことしねーって。バランス感覚悪すぎ。
>>740 ウィンドウ開いてエディットコントロール使うのか?
それともコンソールプログラムでいいのか?
もう少し仕様を明確にしろ。エコーバックは無いほうがいいのか?
環境依存の話は他スレでどうぞ。
745 :
デフォルトの名無しさん:03/01/13 23:19
>>743 >char ch[9];
をわざわざ
>char ch[8+1];
に直した時点でかなりの主張が感じられるのは気のせい?
と粘着してみる。
>>743 コンソールプログラムです。
エコーバックはあった方がいいです。
ってかできそうですか!?自分はもう無理ですが、すごい気になります。
ぜひお願いします。
>>746 粘着なんてかくな
俺だと思われるじゃないか(T_T)
無視されたぜ。
おーまいが!
750 :
デフォルトの名無しさん:03/01/13 23:26
>>747 こんなんでどう?
#include <stdio.h>
int main()
{
#define N 8
int i, ch;
char pw[N + 1];
for (i = 0; i < N; i++) {
while (!kbhit());
ch = getche();
if (ch == '\r') {
break;
}
pw[i] = ch;
}
pw[i] = '\0';
printf("\npw= %s\n", pw);
}
>>741=749
ごめんなさい。無視しちゃいました。
確かに使いにくいかもしれませんね。
ただ、こういうのができるのかがすごい気になりだしたので、
このプログラム組める方がいたら聞いて見てみたいのです。
kbhit()…
あ、kbhit()の行はいらないか…
>>750 なるほど。getcheには\r\nを\nにしてくれる機能なんてないのか。
どうりでうまくゆかなかったわけだ(ひとりごと)
#include <stdio.h>
#include <conio.h>
int main()
{
char ch[9];
char i;
for(i=0;i<8;i++){
ch[i]=getche();
if(ch[i]=='\r')
break;
}
ch[i]='\0';
printf("\n%sでいいの?",ch);
return 0;
}
>>741&750さん
すごいすごい!感激!
なーるほど!ですね。こうやればよかったのかぁ。
さすがですねぇ。勉強になりますm(_ _)m
(ただ、途中で間違えてバックスペースとか押しちゃうと。。。。
まぁご愛敬ですかね。)
・・・・getcheはgetchar同様int型で受け取るべきか・・・
>>756 とりあえずBSに対応したけど、画面もちゃんとしたいならもっと書かないとね。
ただ、8文字目で勝手に次、って仕様とは合わないでしょ?
#include <stdio.h>
int main()
{
#define N 8
int i, ch;
char pw[N + 1];
i = 0;
while (i < N) {
switch (ch = getche()) {
case '\r':
break;
case '\b':
if (i) {
--i;
}
continue;
default:
pw[i++] = ch;
continue;
}
break;
}
pw[i] = '\0';
printf("\npw= >%s<\n", pw);
}
761 :
デフォルトの名無しさん:03/01/14 00:16
みなさんどうもありがとう。
とりあえず、Cに興味しんしんでふ。
入門書、買ってみようと思いまふ。
>>762 ページが抜けるまで読み尽くせ。
ガンガレ
764 :
デフォルトの名無しさん:03/01/14 00:35
空域!?
>>764 空域はともかく空気は読めてるな。
何か昔から空気読めの意味勘違いしてるバカが出没するなぁ・・・。
このスレで、環境依存と断らずに conio.h を使う香具師が居るとは思わなかった・・・。
________. | ・・・「からけ」?
||| | \____ __
||| | )\ ∨
||| 空 気. <⌒ヽ ヽ
||| \ ( ´ー`) ∧∧
|||_________V( 丿V^ ●Д゚,,)
|,,| |,,| ヽ ( と ,)
ノ ) | |〜
し`J,,.
この世でまともな環境と呼べるのはWindowsだけ!!
769 を誰か救ってあげてください
勘弁願います
772 :
デフォルトの名無しさん:03/01/14 02:51
不可能です。
charでなにか配列を定義して、その配列に、文字列をよませたい
って時に、scanf("ここ")のここはなにをいれるんすかね?
%lsかなって思ったけどうまくいかない
775 :
デフォルトの名無しさん:03/01/14 03:48
>>774 %sだけど、scanf()は危険だし、使いにくいよ。sscanf()か何かにしなさい。
どうもありがとうございます。やってみます
1 行読みたいなら fgets() だが
まだ作っている途中の確認みたいな段階なんですけど、
うまく動作しません。どこが間違っているのか教えてください。
きいてばっかですいません。
#include<stdio.h>
#include<stdlib.h>
main()
{
int i,k,l,n;
char *a;
printf("入力する文字数は何文字ですか?\n");
scanf("%d",&n);
a=(char *) malloc( n*sizeof(char));
for(i=0;i<n+1;i++)
{
printf("文字を入力してください。\n");
scanf("%s",&a[i]);
}
printf("%s\n",a[0]);
return 0;
}
779 :
デフォルトの名無しさん:03/01/14 04:14
>>778 fgets使えって
それとsizeof(char)は何の意味もない。
しかもナル文字のことを考えていないし
あとmallocの戻り値をチェックしていないのもいけない。
C言語なんかでつまらんこと気にするな。
ぜんぜんってことですね。勉強しなおしてきます
なんか、学校で習った、動的確保はしたんんですけど、こんぱいるされないいんですよ
#include<stdio.h>
#include<stdlib.h>
typedef char *vec;
void error(text)
char *text;
{
printf("%s\n",text);
exit(1);
}
vec vector(n);
int n;
{
vec x;
x = (char *) malloc( n*sizeof(char));
if(!x) error("allocation failure in vector()");
return(x);
}
main()
{vec *a;
int k,l,n;
printf("入力する文字数は何文字ですか?\n");
scanf("%ld",&n);
*a=*vector(n);
printf("文字を入力してください。\n");
scanf("%s",&a);
printf("%s",a);
return 0;}
・・・・・までもないか。
処理は関数の中に書かないと・・・
あ、ごめん。古い書き方なのね。
鬱だし脳
>>783 > vec vector(n);
このセミコロンのせいじゃない?
エラー E2258 report1.c 13: ここには宣言が必要だが見つからない(関数 vector )
警告 W8065 report1.c 19: プロトタイプ宣言のない関数 'error' の呼び出し(関数 vector )
警告 W8065 report1.c27: プロトタイプ宣言のない関数 'vector' の呼び出し(関数 main )
警告 W8069 report1.c 27: 移植性のないポインタ変換(関数 main )
*** 1 errors in Compile ***
です。すいません
>787
ほんとだ。なりました。
ありがとうございます
>>788 C++としてコンパイルしたのか。
Cとしてコンパイルすればプロトタイプがなくてもエラーにはならないはず。
しかし今時こんな書き方で教えている学校ってどこだろ・・・・
ついでに、この機会にもう一個質問させてください。
えっと、配列でchar a[ ]みたく定義しといて、さっきの俺のみたいに
、scanでaによみとらせますよね。
このときって、どこに読み取られた文字って格納してあるんですけね?
なんか、てもとには、a=a[0]へのポインタってかいてあるけど、
printでa[0]にしてもエラーになるし
>>791 配列じゃなくてポインタでしょ?
そのポインタが指す先(つまりはmallocで得た領域)
> printでa[0]にしてもエラーになるし
どういうこと?printf("%c",a[0]);で問題なくa[0]が表示されると思うけど
つまり
printf("文字を入力してください。\n");
scanf("%s",&a);
printf("%s",a[0]);
みたいにした場合です
>>793 %sは文字列を表示するときでしょ(^_^;)
printf("%s",a[0]);なんてやったら(ポインタでなく整数を渡したら)十中八九アクセス違反が起きる。
ですね・・・・。やってみたらなったし。
ほんとにながながと教えていただいてありがとです。
うちの大学の適当さがみにしみました・・・・。
>>795 むしろ大学で教えてもらおうという姿勢がよくない。独学が一番。
798 :
デフォルトの名無しさん:03/01/14 16:55
数行に渡るテキストファイルがあって
そのファイルを引数で渡し
それを行毎に読みこむ。
読みこんだ行毎に定まったフォーマットで
変換し、新たなファイルに1行づつ
書きこみたい。
こんな感じのプログラムを作らなくては
いけないのですが、厨房なものでなにも
わかりません。
自分なりにわからない点をまとめてみますので
ご教授頂けると幸いです。
@1行づつ読みこみ、1行づつ書きこむ方法が
わかりません。
A読みこみ側のファイルはヘキサ表示なんですが
それをint型やchar型に変換したいが、
やりかたがわからない。
以上、厨な質問ですが宜しくお願い致します。
fgetsで一行ずつ読み、fput,fprintfなどで一行ずつ書き込む。
ヘキサ表示??16進数字列ってことか?それなら読み込んだものをstrtolやsscanfで変換する。
801 :
デフォルトの名無しさん:03/01/14 17:00
いきなりすみません
2ちゃんねるを見ている人に連絡です
プログラマーを大募集します!
携帯のメールに関してのプログラムです
かなりアングラ系なので・・・高い技術を求めます
風俗関係のソフトではありません
ウィルスに精通している方を求めます
報酬は100万以上です
期間は2ヶ月です
これはっ!と思う方メールを下さい!
[email protected] まで・・・・
fputじゃなくてfputs
一人月50か?
やってらんねー
空域よめてないぞ
なにやってんの
________. | ・・・「そらしろ」?
||| | \____ __
||| | )\ ∨
||| 空 域. <⌒ヽ ヽ
||| \ ( ´ー`) ∧∧
|||_________V( 丿V^ ●Д゚,,)
|,,| |,,| ヽ ( と ,)
ノ ) | |〜
し`J,,.
構造体で
struct data{
char aaa[64];
char bbb[64];
char ccc[256];
}
みたいな構造体を1000個ほど確保する必要があるのですが
各データaaa,bbb,ccc共に、実際は16バイト程度しかなかったりします。
何か効率の良いデータ領域の確保の方法はありませんか?
808 :
デフォルトの名無しさん:03/01/14 20:22
>>807 普通にmalloc()すれば。3つ分で1回のmalloc()にすればちょっとだけ効率いいかもね。
809 :
名無し@沢村:03/01/14 20:28
ポインタでいきずまってるヌヒ等よ、ポインタはやさしいぞ。
ポインタというのはな単にその変数のメモリアドレスを指しているだけよ。
それ以上のものではないぞ。
ヌヒ等はC言語を勉強するなら、ポインタをまず覚えろ!!
便利だから覚えてみろ!!
どう便利かというとな、ポインタのポインタを使うときに便利さが出てくるのよ。
ポインタのポインタを使うとなそのプログラム以外の別のプログラムが使っている変数のメモリアドレスも参照できるのよ。
例えばインターネットでむすばれた別のコンピュータにあるメモリアドレスなどもな。
ヌヒ等よ、ポインタは、ポインタのポインタを使ってはじめて便利さがわかるものよ。
ポインタのポインタを使わないんだったら、別にポインタを使う意味はあまりないよ。
>>807 struct data {
char *aaa, *bbb, *ccc;
};
としておいて、aaa,bbb,ccc各メンバの実体も全部実行時に確保する。
質問です
struct list{
struct list *next;
};
って連結リスト構造体ってのはなんでポインタを使うんですか?
なんとなく感覚ではわかるんだけど
頭のなかでは理解できないです
>>811 次の要素のありかを覚えておく必要があるから。
この場合
struct list next;
にしちゃった時とはどう違うんですか?
ポインタじゃなくても配列にしてインデックス番号を持たせればいいじゃないですか?
>>813 つーかお前は何も分かってないぞ。
何となくですら分かって無いじゃん。
>>813 next,nextの次のリストを指すことはできない。
ポインタを分からん奴はつまはじき。
初心者がポインタを難しいと言った時点で初心者は来るなと言われます。
>>813 メンバーに自らのインスタンスはもてないYO
できたら無限ループみたいになっちゃうYO
>>807 struct data{
char *aaa;
char *bbb;
char *ccc;
};
int setdata(struct data *d, char *a, char *b, char *c)
{
static char tbl[16384], *tp=tbl;
d->aaa=tp; while(*tp++=*a++);
d->bbb=tp; while(*tp++=*b++);
d->ccc=tp; while(*tp++=*c++);
}
820 :
名無し@沢村:03/01/14 21:21
ポインタでいきずまってるヌヒ等よ、ポインタはやさしいぞ。
ポインタというのはな単にその変数のメモリアドレスを指しているだけよ。
それ以上のものではないぞ。
ヌヒ等はC言語を勉強するなら、ポインタをまず覚えろ!!
便利だから覚えてみろ!!
どう便利かというとな、ポインタのポインタを使うときに便利さが出てくるのよ。
ポインタのポインタを使うとなそのプログラム以外の別のプログラムが使っている変数のメモリアドレスも参照できるのよ。
例えばインターネットでむすばれた別のコンピュータにあるメモリアドレスなどもな。
ヌヒ等よ、ポインタは、ポインタのポインタを使ってはじめて便利さがわかるものよ。
ポインタのポインタを使わないんだったら、別にポインタを使う意味はあまりないよ。
823 :
名無し@沢村:03/01/14 22:25
ポインタでいきずまってるヌヒ等よ、ポインタはやさしいぞ。
ポインタというのはな単にその変数のメモリアドレスを指しているだけよ。
それ以上のものではないぞ。
ヌヒ等はC言語を勉強するなら、ポインタをまず覚えろ!!
便利だから覚えてみろ!!
どう便利かというとな、ポインタのポインタを使うときに便利さが出てくるのよ。
ポインタのポインタを使うとなそのプログラム以外の別のプログラムが使っている変数のメモリアドレスも参照できるのよ。
例えばインターネットでむすばれた別のコンピュータにあるメモリアドレスなどもな。
ヌヒ等よ、ポインタは、ポインタのポインタを使ってはじめて便利さがわかるものよ。
ポインタのポインタを使わないんだったら、別にポインタを使う意味はあまりないよ。
#include< iostream.h>
main()
{ int num;
do{
while(cin>> num)
{
}
}while(cin >> num);
return0;
}
繰り返しが行われません、理由を教えていただけませんか、入門者ですレベルが低くてすいません
今日、二つのスレッドでお聞きしたのですが、見てのとおり低レベルです、ちゃんと解決しはしませんでした
教えていただきたいです
>>824 多分C++(^_^;)
Cでもコンパイルできないことはないと思うけど。
あーすいません まだC言語とC++が区別できません どうにか看て頂けませんか
いくらなんでもネタだろ。
whileの囲い方がすげーな。
いやあの ネタじゃないです9月から講義が始まったばかりなので
もしかしてwhileの中にwhileを入れ子してはだめなんでしょうか
>>828 いけないわけじゃない。実際、ループの入れ子ってのはあるし。
でも
>>824は何をしたいのかさっぱりわからないぞ。
何をしたいの?
>>827 何か、俺には
>>824 の文体には
普通のネタには存在しない、
ある種の「華」があるように感じられるが・・・
もしかして女?(w
「普通のネタ」とゆうかネタではないので あと男です よろしくお願いします
>>832 大馬鹿者!!!
せっかく喰いつきを良くしてやろうと思ったのに・・・
ほんとにすいません、嘘をつこうかと迷ったのですが、今日は苗字で質問しても(?)
無視されっぱなしで、嘘をつく根性がないんです、余裕もないんです。
>>832 なんだ♂か。別にどーでもいいや。放置。
どなたかお願いします、放置…は…
>>836 なにをしたいのか、もっと詳しく書かないとわからないよ
#include< iostream.h>
main()
{ int num;
do{
while(cin>> num)
{
}
}while(cin >> num); ←←←
return0;
}
お返事ありがとうございます その←の所がループをしないんです
cinができないんです勝手に値が入ってしまうんです これはなぜでしょうか
よろしくです
>>838 スレ違いの上にマルチはいい加減止めような。
>>838 C++のストリームは一度eofbitが立ってしまうと、明示的にクリアしてやらないと
元に戻らない。下のプログラムのようにしたらどうか。
#include <iostream>
int main()
{
int num;
do {
while (std::cin >> num)
{
}
std::cin.clear();
} while (std::cin >> num);
}
>>838 C厨の俺には>>(右シフトじゃないよ)が何を返すのかわからん・・・・
C/2ってのがあったな
>>839 もうしません、ご迷惑おかけしました
>>840 int main(), std::, std::cin.clear();習って居りません
せっかく考えて頂いたの理解できなくて申し訳ありません
eofbitが立ってしまうと、明示的にクリアしてやらないと
元に戻らない。
ということはwhileの中にwhileは入れ子は上記の知識がないうちはできない
と理解していいのでしょうか?
>>844 そうでなくて、同じstd::cinからの返り値を見ているのが問題。
二番目の>>が何の為に使われているのかはわからないが、
一番目の>>を例えばWindowsならCTRL+Zで抜けていると
思うが、その時eofbitが立ち、以降のブール式はすべてfalse
になる。
>>844 何処を、どう理解すれば、その答えになるのか分からんが
>>840が言ってる事は1度目の(cin>>num)で
EOF(ファイルの終わり)が検出されたら2度目(以降)の(cin>>xxx)は
あなたが期待してるようには動かないと言う事
do {
while(cin>>num) { // ここでEOFになってるので
}
} while(cin>>num) ; // このcinは、あなたが期待したように動かない
>>846 ご返答していただいているのに知識の無さで理解できずにすいません
eofbitをまだ習って居りませんがCTRL+Zでループを抜け出したことで二番目が
ループしなくなっているということでしょうか、CTRL+Zしか抜け出し方を習ってないので
やはりwhileの中のwhileはむりなんでしょうか
>>847 わかりやすく説明ありがとうございますEOfも説明して貰わなければならない無知です
非常に馬鹿な質問でしょうが、恐れ入りますが、なぜEOFになるのでしょうか?
>>848 CTRL+Zをstd::cinに与えると(Windowsの場合)std::cinはこれをEOFと
みなし、もうこれ以上の入力がないと判断してfailbitが立つ。eofbitも
立つが、ここではfailbitのみを見る。
その結果 while (std::cin >> num) のブール式がfalseになって、一番目
のwhileを抜け出す。
このまま二番目の while (std::cin >> num) に入って来ることになるが、
failbitが立っているためすぐさまfalseを返す。これはC++のストリーム
の仕様であり、Cのscanf()などとは事情が異なる。
>>850 failbitも習って居りませんが、一番目を抜け出すときにfalseになって、それが
二番目のwhileのときにも影響してしまうということでしょうか。またもわかりやすくありがとうございます
CTRL+Zで抜け出す以上は、以後にwhileは置けないということですね(?)
あのさー、漏れがせっかく C++ スレに誘導したのに、なんでまだここで
C++ の話が続いてるの?
>>852 >>824に在りますとおり午後から質問を他のスレッドでもしたのですが、
レベルが低すぎるのか(今もそれで説明に苦労をおかけしてます)
相手にしてもらえませんで…、ここに質問してよかったです
>>851 その理解はちょっと危うい。
例えばstd::cinがリダイレクトされていてファイルに結びつけられていた
場合、ファイルの終端を超えて読み込もうとした場合も同じくfailbitが
立つ。
CTRL+Zにしろ、ファイルの終端にしろ、failbitが立ってしまった場合は、
それをclear()で明示的にクリアしてやればストリームの状態を元に
戻すことができ、また正常な動作になる。そうすれば、再度whileを
置いても全く問題がない。
これからC++のストリームを多用していくのであれば、絶対に覚えて
おかなければならない。
>>854 ありがとうございます、問題の元が大体(危ういですか)わかった(?)のですが、
今、whileの中にwhileを入れ子する方法が無いのではどうやって課題を解こうかを思っていました
ではクリアにするのは、「std::cin.clear();」の一文を書けばいいのでしょうか?
条件文も「std::cin >> num」のようにしなければならないのでしょうか?
>>851 ちみ、面白すぎるよ
whileの入れ子は出来ないとか
CTRL+Zで抜けたら以後whileは使えないとか
つーわけで、漏れの迷言集に書き加えて置きますた
>>851 知識が無くて申し訳なく思います、入れ子等の使い方も間違ってますか?
>>855 動作をよく考えてみればわかるはず。
一度目のwhileでfailbitとeofbitが立つと、そのままにしておくと二度目の
whileに影響が出るので、その影響を取り除くためcin.clear()の一文を
入れておけばよい。
その事と、whileの入れ子の事とは全く関係がない。
>>858 今 std::cin.clear(); を書きましたら、識別子がクラス名でも名前空間名でもありません
とのエラーがでたのですが、なぜでしょうか?
>>855 多分whileに意識が逝っちゃってるから混乱してるんだろう。
例えばこんなプログラムでも、最初のif文でCTRL+Zを入力すると、
二番目のcinはスキップされるだろう。これでわかるか?
#include <iostream>
int main()
{
int i;
if (std::cin >> i) std::cout << i << std::endl;
if (std::cin >> i) std::cout << i << std::endl;
}
>>860 それは、
#include <iostream.h>としているから、std名前空間にcinが入ってないためです。
std::を取って、単にcin.clear(); として下さい。
>>824-861 いい加減 C++ スレに移動してくれよ。
回答する方もする方だ、なんで誘導しない?
>>861 私、今の今までスキップがEOFなどの原因であることを知りませんでしたもので、
>>864 すると何か?
861-862 の方がむしろ DQN というい事か?
>>861 今ステップ実行したらよくわかりました例文ありがとうございました
>>862 stdをはずすと二番目のwhileで入力できました、12月25日にこれになやんで20日
経ちますが、理由をわかりとてもうれしいです。
お二方(?)ありがとうございました。
>>863 >>864 これより気をつけます、あまりこの2ちゃんねるのこと(掲示板?)がわかっていないため
日ごろ使っている方に迷惑をかけたかもと思います、すいませんでした
C言語の関数一覧表(それぞれの関数の詳しい説明も載ってる)みたいなのって、
みなさんどこのサイトの見てます?いいサイトあるのかな?
>>868 世の中の人が作った数だけ関数は存在するので
一覧表を持ってる人は神!?
>>868 自分の使ってるコンパイラについていると思うけど。それ以上は普通いらない。
> それ以上は普通いらない。
突っ込んでいいですか?
>>871 そういう趣味はないのでやめてくれ。
しかし、どこに突っ込むんだ?
>>872 だって 870 は、「コンパイラについている以上の関数は普通いらない」 としか
読めないんだけど。
874 :
デフォルトの名無しさん:03/01/15 01:48
>>873 まぁ、ネタなんだろうが…
Cの標準ライブラリの関数のことだろ、868は。それくらい想像してやれよ。
(・∀・) ヤダ!
>>871=875
素直にマジボケだったと反省しる。
(゚Д゚)ハァ?
880 :
デフォルトの名無しさん:03/01/15 06:18
ほんとすいません。 sign関数はどこのヘッダーにあるのですか?
mathには無いみたいです。
ありがとう。 ifでやりました.
884 :
デフォルトの名無しさん:03/01/15 08:11
885 :
デフォルトの名無しさん:03/01/15 13:00
srand(SEED)
で生成できる乱数列は、例えばWindowsとLinuxでも同じになるんでしょうか?
>>885 いいえ、WindowsとLinuxどころか同じwinでもコンパイラが変われば
全然違う乱数列を返す可能性があります。
887 :
デフォルトの名無しさん:03/01/15 14:51
16進数標記のテキストを読みこんで
バイナリーに変換して書きこむという
プログラムを作成しなくてはいけないのですが
バイナリでライトする方法がわかりません。。。
厨ですが、どなたかご教授お願い致します。
>>886 ありがとうございます。
自前で実装することにします…
890 :
デフォルトの名無しさん:03/01/15 15:49
初心者質問ですいません。
MS-DOSでコマンドライン引数としてファイルをプログラムに
渡したいんですけど、どういう風にDOSに書き込めばいいんでしょう?
>>890 ここがわからん
>DOSに書き込めばいいんでしょう?
誰が?(user/program) 何を?
習っていませんってのがむかつくなぁ。センセイに教わらなきゃ新しい知識が得られないのか?
こんなアフォ相手にみんな親切だね。
消防、厨房のときに習っていない方法を使って減点されたり、工房のときに「習っていないことに
なっているので入試でロピタルの定理を使ってはいけません」とか言われたのを思いだした。
>>890 それならMS-DOSとか関係なしに、argv[]で渡せばいいんじゃないですか。
argv コマンドライン引数 fopenあたりでgoogleかけてみてください。
(^^)
894 :
デフォルトの名無しさん:03/01/15 19:03
gcc について質問なんですが、
今、ncursesライブラリを使うプログラムを書いているのですが、
コンパイルする時になぜ -lncurses をわざわざ付けなければ
ncursesライブラリを見つけられないのですか?
そのオプションを付けなくても自動的に見つけることができないのはなぜでしょうか?
895 :
デフォルトの名無しさん:03/01/15 19:09
>>894 習っていませんってのがむかつくなぁ。センセイに教わらなきゃ新しい知識が得られないのか?
こんなアフォ相手にみんな親切だね。
消防、厨房のときに習っていない方法を使って減点されたり、工房のときに「習っていないことに
なっているので入試でロピタルの定理を使ってはいけません」とか言われたのを思いだした。
>>894 必要と思われるライブラリを自動的に見つけるコンパイラを作ってくれ
んで公開してくれたら、誰かがちょっぴり幸せになるかも
897 :
デフォルトの名無しさん:03/01/15 20:55
じゃあgccがデフォルトで探すライブラリのパスを教えてください。
要はこの標準パスにncursesが入っていないってことでしょ。
>>894 gcc-lib/(target)/(version)/specsを調べろ。
ldのオプションに-lncurses追加すれば、目的は達成できるはず。
プログラム上にイントとフロートの四則演算とサインなどの
計算がいくつかあって、プログラムを動かしている
パソコンのCPU、メモリ、OSなどの性能を考慮して
そのプログラムがどれくらいの実行速度なのかを
測る方法を知りたいのですが
どなたかご存知ありませんか?
>>899 どうでも良いけどお前一文ですべてを終わらせようとするのやめた方が良いと思う。
論文書くにも日本語がまともに書けないと話にならないわけで。
901 :
デフォルトの名無しさん:03/01/15 21:43
main関数を再帰して作るプログラムというのは不作法な事でしょうか。
また、そうして作られた有名なプログラムというものはありますか。
>>901 引数と返値に制約が出るね。
それが汚いと思わないならそれはそれでありかも。
>>900 彼は全ての処理をメイン関数に書くタイプだろうね。
VBはわかりますか?
わかるのであればぜひ教えてください!!!
>>904 スレタイはわかりますか?
わかるのであればぜひ別スレにいってください!!!
m(_ _;)m ゴメン!!
スレタイってなんすか?
>>909 スレッドのタイトルの略。
略すとわかんないと言われるかもれないなぁと思ったけど、
間延びするんで、スレタイにしました。
VBは別に質問用スレッドがあると思いますので、
そっちで聞いた方がよいです。
911 :
デフォルトの名無しさん:03/01/15 22:09
次の構文の ^^ の部分がわかりません
void (*hoge (int arg1, (*arg2) ())) () { /* ... */ }
------------------------------------^^---------------
呼び出しは
hoge(value, function);
となっています。お願いします。
他で聞くことにします。気分を害してすいませんでした。
913 :
デフォルトの名無しさん:03/01/15 22:12
911ですがすいません。{ の後ろの () がわかりません。
>>911 俺にはコメントを指してる様にしか見えない・・・
実際どこ指してるの?
{ の後ろの () ?
918 :
デフォルトの名無しさん:03/01/15 22:18
ちなみにCCレモンは好きだ
919 :
デフォルトの名無しさん:03/01/15 22:58
C言語は
web上のHTMLソースを取得してきて何かをする、みたいなことは出来ますか?
>>919 環境も書かずにそんなことを聞く奴にはsocketを薦めてあげよう。
922 :
デフォルトの名無しさん:03/01/15 23:08
Linuxでcでプログラム作ったのですが、これを1分周期で動かしたい
のですが、何か方法はありますか?
WindowsでのATコマンドみたいなものはあります?
crond
>>922 >WindowsでのATコマンドみたいなものはあります?
なんかものすごく勘違いしている気がする。
925 :
デフォルトの名無しさん:03/01/15 23:53
C言語にJavaも入りますよね?
分かりますか?
>925
(゚Д゚)ハァ?
927 :
デフォルトの名無しさん:03/01/15 23:56
VC++ SDI
ダイヤログのピクチャーボックスに描かれた絵をウインドウを閉じたり、縮小しても消えないようにしたいです。BITMAPINFOHEADERやStretchDIBitsを使えばいいのかなとおもうのですけど、やり方がいまいちわかりません・・教えてください。
私が足したプログラムは次のだけです。
void CMy00000View::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
int x, y;
CWnd* h = GetDlgItem(IDC_FIGURE);
CRect r;
h->GetClientRect(r);
CDC* pDC=h->GetDC();
x = r.right/2;
y = r.bottom/2;
CPen p(PS_SOLID, 1, RGB(255, 255, 0));
CPen* oldp=pDC->SelectObject(&p);
pDC->MoveTo(0, y); pDC->LineTo(2*x, y);
pDC->MoveTo(x,0); pDC->LineTo(x, 2*y);
pDC->SelectObject(oldp);
h->ReleaseDC(pDC);
928 :
デフォルトの名無しさん:03/01/15 23:58
Cで画像を表示させたいのでgtk+をいれて、今のとこ簡単な
サンプルプログラムをコンパイルできるような段階になったのですが、
画像を表示させる方法が分からないので、Cでgtk+をつかったプログラムを
解説してるようなサイトがあればおしえてください
930 :
デフォルトの名無しさん:03/01/16 00:05
いや、それはみましたが、そもそもgtk+で画像を表示するのに
どんな関数を使うのかとかが分からないので、gtk+の解説を最初から
理解していないと、どこが良くてどこが分かりづらいとかが分からないから
お勧めないか聞いてるわけです
人工無能搭載のGoogle厨は相手にすんな。
簡単な日記のプログラムを作りたいんですけれど、コンパイルの時に、
12行目の宣言がおかしいとでてきます。どこかわからないんで、どうか教えてください。
下のがソースです。
#include<stdio.h>
#include<process.h>
#include<stdlib.h>
#define month 12
#define day 31
struct nikki{
char TENKI[10];
char Naiyou[1024];
}a[month][day]
main()
{
int i,j;
struct nikki a[month][day]
FILE *fp;
fp fopen("nikki.text","a");
if(fp==NULL)
{
printf("失敗です\n");
exit(-1);
}
else
{
printf("今日は何月何日ですか?\n")
scanf("%d,%d"&i,&j);
printf("今日の天気はどうでしたか?\n")
scanf("%s"&a[i][j].TENKI);
printf("今日の出来事を入力してください\n");
printf("Qを入力すると終了で、512文字までです。\n");
while(1)
{
scanf("%s",&a[i][j].Naiyou);
if(a[i][j].Naiyou[0]==Q)
{
break;
}
else
{
fprintf(fp,"%s",a[month][day].Naiyou);
fprintf(fp,"%c","\n");
printf("FILEへの書き込みしました\n");
}
}
}
fclose(fp);
return 0;
}
>>932 mainの前の構造体宣言の末尾に;が入ってない。
ですね。なんかもっとバグ見つかったんで、出直してきます。
すいません。ありがとうございました
本かえたら?>もしもし
>937
どうしてっすかね?
>>938 ありがとうございました。
必死こいてやってきます。
てかやっぱりできません。いろいろ自分でできる限りいじってみたんですけど。
まじどうして・・・。って感じです。教えてください、おねがいします。
エラー E2087 report3.c 31: ポインタの不正な使用(関数 main )
エラー E2087 report3.c 33: ポインタの不正な使用(関数 main )
警告 W8069 report3.c 39: 移植性のないポインタ変換(関数 main )
#include<stdio.h>
#include<process.h>
#include<stdlib.h>
#define month 12
#define day 31
struct nikki{
char TENKI[10];
char Naiyou[1024];
}a[month][day];
int main(void)
{
int i,j;
struct nikki a[month][day];
FILE *fp;
fp = fopen("nikki.text","a");
fp = fopen("nikki.text","a");
if(fp==NULL)
{
printf("失敗です\n");
exit(-1);
}
else
{
printf("今日は何月何日ですか?\n");
scanf("%ld,%ld"&i-1,&j-1); 31行目
printf("今日の天気はどうでしたか?\n");
scanf("%s"&a[i-1][j-1].TENKI);
printf("今日の出来事を入力してください\n");
printf("Qを入力すると終了で、512文字までです。\n");
while(1)
{
scanf("%s",&a[i-1][j-1].Naiyou);
if(a[i][j].Naiyou[0] == "Q") 39行目
{
break;
}
else
{
fprintf(fp,"%s",a[month][day].Naiyou);
fprintf(fp,"%c","\n");
printf("FILEへの書き込みしました\n");
}
}
}
fclose(fp);
return 0;
}
scanf("%ld,%ld"&i-1,&j-1); → scanf("%d,%d", &i, &j);
if(a[i][j].Naiyou[0] == "Q") → if(a[i][j].Naiyou[0] == 'Q')
944 :
デフォルトの名無しさん:03/01/16 00:57
レスありがとうございます。やってみたところ
39行目の方は直りました。
ただ、31,33行目の方はやっても効果なしなんですけど・・・。
エラー E2087 report3.c 31: ポインタの不正な使用(関数 main )
エラー E2087 report3.c33: ポインタの不正な使用(関数 main )
ってでるし。
まじ根本的に間違っているのでしょうか。
946 :
デフォルトの名無しさん:03/01/16 01:02
すいません。
>942にかいていたもので・・・。
まったく同じ所です。
948 :
デフォルトの名無しさん:03/01/16 01:06
>>947 書いてあったか。
コメントになっていなかったから見落とした
何処がおかしいか見て判らん、ってのはもう話にならんのだが…
"," は?
950 :
デフォルトの名無しさん:03/01/16 01:07
>>947 &を取れ。
scanfには&をつけて渡すものだとか理解しているだろ?
すいません、なんかできました。” ”のあとの&の間の、が抜けてました・・・・。
んで、うまく動かないんで、考え直してきます。
あと、&ってかならずつけるものではないんですか?
>>951 やっぱり(藁
scanfにはポインタを渡すんだよ。
配列名はポインタを返すんだから&をつけちゃだめだろ。
というか配列名に&をつけたらエラーになるな多分。
>>945 あー、エラーになっているか。
そういう理由でエラーになったんでしょ。
あ、確かに・・・。
なんか、でもソフトが動かないって致命的なみすになってるんで、出直します。
なんか、前ので言ったら、32行目がのprintfが働かない。
もう鬱過ぎる
あとなー、
aという名前でグローバル宣言しているからmain()の中のstruct〜は不要。
もうひとつ。
全角512文字入力されると領域足りないぞ。
ですね。charはめいっぱいで、全角128文字くらいでしたもんね。
あと、配列に日付け入れたりとかいろいろみすあったんで。
ほんとにどーしようもないそーすですね・・・。
ほんといろいろ教えてもらってありがとうございました。
>>もしもし
>>942を、やりたいと思われるように直しました
これを参考に違いを良く考えると良いかも
(他にも、突っ込みどころが多いんだけどね…)
else
{
printf("今日は何月何日ですか?\n");
scanf("%d,%d",&i,&j);
i--,j--;
printf("今日の天気はどうでしたか?\n");
scanf("%s",a[i][j].TENKI);
printf("今日の出来事を入力してください\n");
printf("Qを入力すると終了で、512文字までです。\n");
while(1)
{
scanf("%s",a[i][j].Naiyou);
if(a[i][j].Naiyou[0] == 'Q')
{
break;
}
else
{
fprintf(fp,"%s",a[i][j].Naiyou);
fprintf(fp,"%c",'\n');
printf("FILEへの書き込みしました\n");
}
}
}
fclose(fp);
return 0;
}
>ですね。charはめいっぱいで、全角128文字くらいでしたもんね。
ソースきぼん。
signed charの範囲に関する思い違いかと。
というか無知の知を…
gnome.hという具体的なファイルを検索かなんかで探してみたら?
>>894 そういうときはMakefile作るのが正道だと思いますよ。
965 :
デフォルトの名無しさん:03/01/16 04:09
スモールモデル
>964
「〜聞いておくんなせぇ」じゃないの?
968 :
デフォルトの名無しさん:03/01/16 16:53
ビットでchar型が8ビットだったとします
んで 僕は勝手にビット処理用の変数を宣言する時には
必ずunsignedをつけなければいけないと思いこんでいるのですが
この時signedにしてシフトをすると
ビットパターンはどうなってしまうんでしょうか?
参考書に書いてある事を理解できない厨房ですみません
signed char x;
x=160;
x>>=4
を例にしてお願いします
ごめんなさい
x>>=4
セミコロンつけ忘れてました
>969
その環境で走らせてみて、出てきた物が答えです。
やっぱり実行結果ってのは当たり前ですけど
環境によって全然変わってくるんですね〜
確かにデルパソコンとエニアックを比べろ
って言われたらわかるような気もしますが(藁
972 :
デフォルトの名無しさん:03/01/16 17:58
16進数標記のテキストを読み込み
バイナリに変換したいのですが
while(fgets(buf, 256, ifp) !=NULL){
bf = strtol(buf, &dt, 0);
fwrite(&bf, sizeof(bf), 1, ofp);
}
これだとうまくいきません。。。
84バイトあるテキストが16バイトになって
しまいます・・・
ほんと厨な質問で申し訳ないですが
ご教授お願い致します。
階乗プログラム作成中・・・。char *insert_abc(int abc,int n,int(*Set)(int n));
[A] [AB BA] [CAB CBA ACB BCA ABC BAC]のように、成長していくポインターを作りたい。
その際、できるだけループをすくなくする事を心がけ階乗値を使うこと。
ポインターの成長例:
[CAB[0][1] CBA[0][1] ACB[1][0] BCA[1][1] ABC[2][0] BAC[2][1]]
次ループでは、
[CAB[0][0] CBA[0][1] ACB[0][2] BCA[0][3] ABC[0][4] BAC[0][5]]
×4=4!=24
という具合に3重ループで成長します。
これらの、バグを取ろうにも複雑すぎてわからない状態。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *str_insert(char *s1,const char *s2,int n)
{
char *result;
if((result=(char *)malloc(sizeof(char)*(strle(s1+strle(s2)+1)))==NULL){
printf("");
exit(1);
}
memmove(result,s1,n);
result[n]=0x00;
strcat(result,s2);
strcat(result,&s1[n]);
strcpy(s1,result);
return s1;
}
char *insert_abc(int abc,int n,int(*Set)(int n))
{
char **s1;
char *s2;
int i,j,k,found=0;
char number[3];
if((s1=(char**)calloc(sizeof(char*),(*Set)(n+2)))==NULL){
printf("");
exit(1);
}
if((s2=(char*)calloc(sizeof(char),(*Set)(n)))==NULL){
printf("");
exit(1);
}
for(i=0;i<n;i++){
number[0]=abc+i;
/*後々、困るので、今のうちにchar型←int型に変換する*/
number[1]='\0';
for(j=0;j<i+1;j++){
/*線形リストで、お馴染みのポンプ形式でループ内で
メモリー確保する*/
if((s1[j]=(char*)malloc(sizeof(char) *i+1))==NULL){
exit(1);
}
if(found==0){
strcpy(s1[j],"A");
found=1;
}
else{
strcpy(s1[j],s2);
/*strcpyとmemcpyのメモリー確保の状況が亜白できないためstrcpy()が乱立している。*/
strcpy(s1[j],"\0");
/*memcpyの関数設計は、strcpyとどこが違うのかよくわからない。*/
}
/*memcpyも、str_insertも領域を一個づつ後属に確保している。*/
for(k=0;k<(*Set)(i);k++){
/*ゆえに、新たにjループ内でメモリーを確保してstrcpyするのが
望ましい。*/
str_insert(s1[k],number,j);
}
}
s2=*s1;
}
return s2;
}
int kaijou(int n)
{
if(n>0)
return(n*kaijou(n-1));
else
return 1;
}
int main(void)
{
int alpha,num;
char *temp;
scanf("%ls",&alpha);
scanf("%d",&num);
temp=insert_abc(alpha,num,kaijou);
printf("%s",temp);
return 0;
}
/*ソースを見安くするため加工していますご両所くださいm(_ _)m*/
/* こっちの掲示板の方が、見やすいかもしれません*/
1981
http://www.tachiki.com/cgi-bin/chatc/ealis.cgi?#3
977 :
デフォルトの名無しさん:03/01/16 18:45
もうちょっとアルゴリズムを工夫してからプログラム造った法が良いのでは?
アルゴリズムを、工夫しようようにもアルゴリズムの実験のタメに
指定した”文字”から、階乗分の配置換えを行う実験プルグラムを
作ってるんです。(Hash)
もうネタにしかみえない!
981 :
デフォルトの名無しさん:03/01/16 22:01
>>972 strtolは1個のlong値を返すだけですよね。1行に何個か数値がある
のならその個数分strtolで変換しなきゃならんのでは?
long bf[16];
1行分fgets();
dt = buf; /* dtはchar*ね */
do {
bf[j++]=strtol(dt,&dt,0);
} while( *dt!='\0' );/*1個変換後の区切りが文字列終端でなければloop*/
/*ここでは区切りはspace,tab等だと想定:それだと次のstrtolの頭で読み
飛ばされるから。*/
j個分のbf[]をfwriteする; とか・・・
教えてください
Cでsnprintfを自作することになりました。
参考になる資料とかありましたら教えてください。
フリーで使えるソースが何処かに落ちていると良いのですが。
985 :
デフォルトの名無しさん:03/01/18 00:49
>>983 中国のことわざにこういうのアル
「マルチイクナイ」
988 :
デフォルトの名無しさん:03/01/18 02:12
教えて下さい。
Cを使って数値解析したんですけど、その出力される結果をリアルタイムに
2Dグラフにしたいんですが、そのようなグラフを作成する処理について、
何か参考になるHPありますか?
>>988 グラフ作成のコード書いたとして,
そのソースはどんな範囲で通用すればいいんだ?
犬xとWinの両方とかPC9801系とか
何か想定せにゃ答えようないで
csv吐いてgraphvizで表示。
993 :
デフォルトの名無しさん :03/01/18 14:27
floatで小数点以下と整数部分に割り当てられているビット数はそれぞれ
いくらですか?
998 :
デフォルトの名無しさん:03/01/18 15:15
1000!
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。