952 :
デフォルトの名無しさん:02/12/29 12:16
>>951 確実に文字列が','で区切られているなら自分で関数作った方がいいのでは。
954 :
デフォルトの名無しさん:02/12/29 13:39
956 :
デフォルトの名無しさん:02/12/29 16:50
素数を列挙するプログラムですが、配列を用意して、エラストテネスのふるい
を利用したアルゴリズムでできますね。しかし、上限が100000000以上の場合、
配列を用意することができません。どなたか他のアルゴリズムが分かる方、い
ませんでしょうか?
>>956 > 上限が100000000以上の場合、 配列を用意することができません。
ここの部分を詳しく説明してみそ。
>>958 MAXが与えられたとして、
エラストテネスのふるい
を利用したMAXまでの素
数を列挙するアルゴリズ
ムって、array[MAX]を最
初に宣言しますね。で、
全部1に初期化してから
素数じゃないヤツを0に
して、array[i]が1なら
ばiが素数となるはず。
もしこのときMAXが100,
000,000を超えっちまっ
たら、
int array[100,000,000];
なんて宣言できないじゃん?
疎な配列使え
**pのようなポインタのポインタはどのような時に使うのですか?
>>961 strtolとか。
ポインタ変数のアドレスを渡してそこにポインタを入れてもらう。
>>961 ポインタを指すポインタ
p is a pointer to pointer
英語で読むと分かりやすい。初心者の俺がいうのもなんだが。
だれか俺の質問956にも答えてくらはい。
>>959 エラトステネスのふるいってアルゴリズムを勘違いしていた。スマン。
ふるいをかける区間を分割してみたら。
質問なのですが、
ネットの回線速度をタスクバーに表示したいのですが
どうしたらいいのかよく分からないのです。
回線速度を折れ線グラフで表したいのですが・・・。
どうかよろしくお願いします。
実はTClockの回線速度を折れ線グラフにして
TClockでタスクバーに表示されてる文字と重ならないようにしたいのです。
現在のは重なってしまうため、TClockの表示が見づらくなってしまうのです。
なので、回線速度はまた別のアプリとして作りたいのです。
TClockにはソースが同梱されてるのでその中の
回線速度を表示するソースだけmake、コンパイルすれば
いいと思ったのですが考えが甘かったみたいで
DOS上でコンパイルすると
「EXEファイルのエラーです」
とでてしまうのです。
それでここで聞いてみたのです。
最初は投げやりな感じですいませんでした。
よろしくお願いします。
ソースアップしたほうがいいですか?
970 :
デフォルトの名無しさん:02/12/29 22:14
とりえあえずは。
> ネットの回線速度
> タスクバー
スレ違い。
973 :
デフォルトの名無しさん:02/12/29 22:43
974 :
デフォルトの名無しさん:02/12/29 23:40
ここって、質問する時にプログラムを晒してもいいの?
975 :
デフォルトの名無しさん:02/12/29 23:45
>>974 程度にもよる。1000行以上のプログラムを見てくれっていわれても誰も見ない。
977 :
デフォルトの名無しさん:02/12/29 23:59
ものすごく初歩的なことで悪いんですが、
for(i=0; i<N; i++){
…
for(j=0; j<N; i++){
…
}
}
こういうループの中で、配列の内容を書き換えて、
その配列をループの外でprintfで出力しても、書き換えた値がちゃんと出力されますよね?
何度やっても、不思議なことに、どこから出てきたか分からない数値が出てくるんです。
それでプログラムに間違いがあるのかと思ったんですが、ループの中で一度printfで出力させてから、
ループの外で再び出力すると、正確な値が出てくるんです。
やっぱりどこかで気付かない間違いをしてるんですかね?
>>974 ここは添削スレじゃない。
ソース丸投げして 「さあ問題箇所を探してくれ」 とやった場合、大抵無視される。
このスレで質問したいなら、ソース丸投げではなく、問題箇所をはっきりさせて
おいた方がいい。
質問を説明するためにソースが必要なら、問題が再現する最低限のソースを
書けばいい。
だめなんですかね・・・?
すいませんでした。
別スレで聞いてきます。
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は、ちゃんと正確に出力されてます。
985 :
デフォルトの名無しさん:02/12/30 00:09
行列を扱うためのループです
986 :
デフォルトの名無しさん:02/12/30 00:20
987 :
デフォルトの名無しさん:02/12/30 00:23
switch文を入れ子にすることは可能ですか?
ビルドしてみると、エラーが出てしまうのですが
なんとかなりませんか?
>>986 そこが違うのでは?と言うつもりで書いたんだけど・・・
普通に説明されてしまったよ・・・
990 :
977=983:02/12/30 00:28
991 :
デフォルトの名無しさん:02/12/30 00:29
そろそろ新スレ作ります
新そばをおながいします
うんこ
> 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まで行ってるのに
平然と会話をするこの様は
漏れにとっては不思議で仕方が無い
998 :
977=983:02/12/30 00:55
>>995 >>996 いえ、初期化はちゃんとしてます。
ただ、重要なのはループの中身だと思って書いてません。
h
1000!!
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。