C言語なら、オレに聞け! 47

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:02/12/29 12:16
>>951
確実に文字列が','で区切られているなら自分で関数作った方がいいのでは。
953941:02/12/29 12:41
>>952
了解。
954デフォルトの名無しさん:02/12/29 13:39
昔からある次スレ
テンプレ貼っておいたよ。
1-66 は透明あぼ〜んしてね

C言語を俺に聞け 第48回ぐらいか?
http://pc3.2ch.net/test/read.cgi/tech/1037279828/
955954:02/12/29 14:33
専用ブラウザでない人はこちらのリンクをどうぞ

http://pc3.2ch.net/test/read.cgi/tech/1037279828/67-
956デフォルトの名無しさん:02/12/29 16:50
素数を列挙するプログラムですが、配列を用意して、エラストテネスのふるい
を利用したアルゴリズムでできますね。しかし、上限が100000000以上の場合、
配列を用意することができません。どなたか他のアルゴリズムが分かる方、い
ませんでしょうか?
>>956
素数列挙アルゴリズムのスレがあったろ
>>956
> 上限が100000000以上の場合、 配列を用意することができません。
ここの部分を詳しく説明してみそ。
959956:02/12/29 17:49
>>958
MAXが与えられたとして、
エラストテネスのふるい
を利用したMAXまでの素
数を列挙するアルゴリズ
ムって、array[MAX]を最
初に宣言しますね。で、
全部1に初期化してから
素数じゃないヤツを0に
して、array[i]が1なら
ばiが素数となるはず。
もしこのときMAXが100,
000,000を超えっちまっ
たら、
int array[100,000,000];
なんて宣言できないじゃん?
疎な配列使え
961名無し:02/12/29 18:03
**pのようなポインタのポインタはどのような時に使うのですか?
>>961
strtolとか。
ポインタ変数のアドレスを渡してそこにポインタを入れてもらう。
963956:02/12/29 18:06
>>961
ポインタを指すポインタ
p is a pointer to pointer
英語で読むと分かりやすい。初心者の俺がいうのもなんだが。
だれか俺の質問956にも答えてくらはい。
964名無し:02/12/29 18:08
>>962,963
ありがとうございました。
>>959
エラトステネスのふるいってアルゴリズムを勘違いしていた。スマン。

ふるいをかける区間を分割してみたら。
質問なのですが、
ネットの回線速度をタスクバーに表示したいのですが
どうしたらいいのかよく分からないのです。
回線速度を折れ線グラフで表したいのですが・・・。
どうかよろしくお願いします。
>>966
どこまでできてんの?
968966:02/12/29 21:24
実はTClockの回線速度を折れ線グラフにして
TClockでタスクバーに表示されてる文字と重ならないようにしたいのです。
現在のは重なってしまうため、TClockの表示が見づらくなってしまうのです。
なので、回線速度はまた別のアプリとして作りたいのです。

TClockにはソースが同梱されてるのでその中の
回線速度を表示するソースだけmake、コンパイルすれば
いいと思ったのですが考えが甘かったみたいで
DOS上でコンパイルすると
「EXEファイルのエラーです」
とでてしまうのです。

それでここで聞いてみたのです。
最初は投げやりな感じですいませんでした。
よろしくお願いします。
969966:02/12/29 22:11
ソースアップしたほうがいいですか?
970デフォルトの名無しさん:02/12/29 22:14
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
とりえあえずは。
> ネットの回線速度
> タスクバー

スレ違い。
973デフォルトの名無しさん:02/12/29 22:43
http://www53.tok2.com/home/vbc/cgi-bin/upload/source/up1012.lzh
これです。
どうかよろしくお願いします。
974デフォルトの名無しさん:02/12/29 23:40
ここって、質問する時にプログラムを晒してもいいの?
975デフォルトの名無しさん:02/12/29 23:45
>>974
程度にもよる。1000行以上のプログラムを見てくれっていわれても誰も見ない。
>>974
短かいプログラムであれば・・・
977デフォルトの名無しさん:02/12/29 23:59
ものすごく初歩的なことで悪いんですが、
for(i=0; i<N; i++){
  …
 for(j=0; j<N; i++){
   …
}
}

こういうループの中で、配列の内容を書き換えて、
その配列をループの外でprintfで出力しても、書き換えた値がちゃんと出力されますよね?
何度やっても、不思議なことに、どこから出てきたか分からない数値が出てくるんです。

それでプログラムに間違いがあるのかと思ったんですが、ループの中で一度printfで出力させてから、
ループの外で再び出力すると、正確な値が出てくるんです。

やっぱりどこかで気付かない間違いをしてるんですかね?
>>974
ここは添削スレじゃない。
ソース丸投げして 「さあ問題箇所を探してくれ」 とやった場合、大抵無視される。

このスレで質問したいなら、ソース丸投げではなく、問題箇所をはっきりさせて
おいた方がいい。
質問を説明するためにソースが必要なら、問題が再現する最低限のソースを
書けばいい。
979966:02/12/30 00:01
だめなんですかね・・・?
>>977
肝心なループの中の処理を晒せ
>>979
>>972>>1 を見ろ。
すいませんでした。
別スレで聞いてきます。
983デフォルトの名無しさん:02/12/30 00:08
int main()
{
double x[4],y[4];
double a[4][4];
int i,j,k;

for(k=0; k<13; k++){
for(i=0; i<4; i++){
y[i]=0;
for(j=0; j<4; j++){
y[i]=a[i][j]*x[j]+y[i];
}
}

for(i=0; i<4; i++){
x[i]=y[i]/max(y);
}

for(i=0; i<4; i++){
printf("x%d=%f ",i+1,x[i]);
}
printf("\n");
}

こんな感じなんですが。ちなみにこのprintfは、ちゃんと正確に出力されてます。
>>977
内側のfor文のi++は?
985デフォルトの名無しさん:02/12/30 00:09
行列を扱うためのループです
986デフォルトの名無しさん:02/12/30 00:20
>>984
j++の間違いだろうね
987デフォルトの名無しさん:02/12/30 00:23
switch文を入れ子にすることは可能ですか?
ビルドしてみると、エラーが出てしまうのですが
なんとかなりませんか?
988984:02/12/30 00:25
>>986
そこが違うのでは?と言うつもりで書いたんだけど・・・
普通に説明されてしまったよ・・・
>>987
可能。そーすさらせ。
990977=983:02/12/30 00:28
>>984 >>986 >>988
これは単なる書き間違いです。
すいません。
983でループの中の処理を晒しました。
991デフォルトの名無しさん:02/12/30 00:29
そろそろ新スレ作ります
新そばをおながいします
>>983
う〜ん・・・
うんこ
> double x[4],y[4];
> double a[4][4];

一体これはいつ初期化されているんだい?
未初期化のまま

> y[i]=a[i][j]*x[j]+y[i];

とかやったって、ゴミが演算対象になるだけだろう。
コンパイラは警告を出さないのか?
996デフォルトの名無しさん:02/12/30 00:50
>>995
そうだな、staticを付けて0初期化させとかないとな。
997デフォルトの名無しさん:02/12/30 00:53
スレが996まで行ってるのに
平然と会話をするこの様は
漏れにとっては不思議で仕方が無い
998977=983:02/12/30 00:55
>>995
>>996
いえ、初期化はちゃんとしてます。
ただ、重要なのはループの中身だと思って書いてません。
h
1000!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。