No.15909![]() |
人数の出し方 投稿者---ますお(2004/07/27 12:53:42) |
||
初心者なもので、ものすごく初歩的な質問ですが、得点を入力して0点以上20点未満などの分布を求めて、各区間の人数を出すにはどのようにしたらいいのでしょうか? |
No.15911![]() |
Re:人数の出し方 投稿者---nop(2004/07/27 12:58:09) |
||
>初心者なもので、ものすごく初歩的な質問ですが、得点を入力して0点以上20点未満などの分布を求めて、各区間の人数を出すにはどのようにしたらいいのでしょうか? 各区間で、何人が該当するかをカウントすればいい。 |
No.15913![]() |
Re:人数の出し方 投稿者---ますお(2004/07/27 13:16:14) |
||
>>初心者なもので、ものすごく初歩的な質問ですが、得点を入力して0点以上20点未満などの分布を求めて、各区間の人数を出すにはどのようにしたらいいのでしょうか? > >各区間で、何人が該当するかをカウントすればいい。 カウントとはどのようにすればいいのですか? 自分はifや配列を使ってやってみたのですが、うまくいきません。 |
No.15916![]() |
Re:人数の出し方 投稿者---くらたっち(2004/07/27 13:50:28) |
||
>>>初心者なもので、ものすごく初歩的な質問ですが、得点を入力して0点以上20点未満などの分布を求めて、各区間の人数を出すにはどのようにしたらいいのでしょうか? >> >>各区間で、何人が該当するかをカウントすればいい。 >カウントとはどのようにすればいいのですか? >自分はifや配列を使ってやってみたのですが、うまくいきません。 イメージ的にこんな感じでしょうか?? 参考になれば幸いです。 #include<stdio.h> int main(void){ int tokuten = 0; int bunpu[] = {0,0,0,0,0}; while(EOFが入力されるまで得点を取得){ if(0点から20点){ bunpu[0] = bunpu[0] + 1; } else if(20点から40点){ bunpu[1] = bunpu[1] + 1; } else if(40点から60点){ bunpu[2] = bunpu[2] + 1; } else if(60点から80点){ bunpu[3] = bunpu[3] + 1; } else if(80点から100点){ bunpu[4] = bunpu[4] + 1; } } printf(" 0 - 20 : %3d\n",bunpu[0]); printf(" 20 - 40 : %3d\n",bunpu[1]); printf(" 40 - 60 : %3d\n",bunpu[2]); printf(" 60 - 80 : %3d\n",bunpu[3]); printf(" 80 - 100 : %3d\n",bunpu[4]); return 0; } |
No.15926![]() |
Re:人数の出し方 投稿者---ますお(2004/07/27 18:51:25) |
||
>>>>初心者なもので、ものすごく初歩的な質問ですが、得点を入力して0点以上20点未満などの分布を求めて、各区間の人数を出すにはどのようにしたらいいのでしょうか? >>> >>>各区間で、何人が該当するかをカウントすればいい。 >>カウントとはどのようにすればいいのですか? >>自分はifや配列を使ってやってみたのですが、うまくいきません。 > >イメージ的にこんな感じでしょうか?? >参考になれば幸いです。 > ><pre>#include<stdio.h> int tokuten = 0; int bunpu[] = {0,0,0,0,0}; while(EOFが入力されるまで得点を取得){ if(0点から20点){ bunpu[0] = bunpu[0] + 1; } else if(20点から40点){ bunpu[1] = bunpu[1] + 1; } else if(40点から60点){ bunpu[2] = bunpu[2] + 1; } else if(60点から80点){ bunpu[3] = bunpu[3] + 1; } else if(80点から100点){ bunpu[4] = bunpu[4] + 1; } } printf(" 0 - 20 : %3d\n",bunpu[0]); printf(" 20 - 40 : %3d\n",bunpu[1]); printf(" 40 - 60 : %3d\n",bunpu[2]); printf(" 60 - 80 : %3d\n",bunpu[3]); printf(" 80 - 100 : %3d\n",bunpu[4]); return 0; } </pre> 一応参考にして書いてみたのですがうまくでません。 #include <stdio.h> #define NUM 20 int main(void) { int tokuten = 0; int bunpu[] = {0,0,0,0,0,0}; float point[NUM]; for(tokuten = 0; tokuten < NUM; tokuten++){ printf(得点を入力しなさい"); scanf("%f", &point[tokuten]); } if ( 20 > tokuten >= 0 ) { bunpu[0] = bunpu[0] + 1; } else if ( 40 > tokuten >= 20 ) { bunpu[1] = bunpu[1] + 1; } else if ( 60 > tokuten >= 40 ) { bunpu[2] = bunpu[2] + 1; } else if ( 80 > tokuten >= 60 ) { bunpu[3] = bunpu[3] + 1; } else if ( 100 > tokuten >= 80 ) { bunpu[4] = bunpu[4] + 1; } else if ( 100 = tokuten ) { bunpu[5] = bunpu[5] + 1; } printf(" 0点以上 20点未満 : %3d\n",bunpu[0]); printf(" 20点以上 40点未満 : %3d\n",bunpu[1]); printf(" 40点以上 60点未満 : %3d\n",bunpu[2]); printf(" 60点以上 80点未満 : %3d\n",bunpu[3]); printf(" 80点以上 100点未満 : %3d\n",bunpu[4]); printf(" 100点 : %3d\n",bunpu[5]); return 0; } どこが間違っているのか自分では分からないので教えて下さい。 |
No.15928![]() |
Re:人数の出し方 投稿者---ニタチ(2004/07/27 19:21:14) |
||
if文の式がかなりおかしいです。 それから bunpu[0] = bunpu[0] + 1; は bunpu[0]++; と書くようにしたほうがいい気がします。 |
No.15930![]() |
違うところ 投稿者---ますお(2004/07/27 19:57:19) |
||
> if文の式がかなりおかしいです。 それから bunpu[0] = bunpu[0] + 1; は bunpu[0]++; と書くようにしたほうがいい気がします。 ifぶんですか。自分ではどのようにすればいいのか全く分からないので教えて下さい。 |
No.15936![]() |
Re:違うところ 投稿者---ぽへぇ(2004/07/27 21:28:15) |
||
>ifぶんですか。自分ではどのようにすればいいのか全く分からないので教えて下さい。 >if ( 20 > tokuten >= 0 ) { Cではこれを以下のように書きます。 >if ( 20 > tokuten && tokuten >= 0 ) { あと、 > scanf("%f", &point[tokuten]); } forのループはここで終わり? また、変数名に突っ込むのもなんですが、tokuten が forでループというのも 違和感を感じます。この違和感が次のような間違いの原因にもなっている のではないでしょうか。 >if ( 20 > tokuten >= 0 ) { 得点は point[tokuten] に入力したはずですよね? 以上のような観点で直してみてください。 |
No.15943![]() |
Re:人数の出し方 投稿者---くらたっち(2004/07/28 10:00:10) |
||
>どこが間違っているのか自分では分からないので教えて下さい。 まぎらわしいので変数「tokuten」を「i」に変更してみました。 これで何をしていたのかわかりやすくなったと思います。 ソース、コメントをじっくり読めば答えが出ると思います。 また、if文の各条件式は、ぽへぇさんのおっしゃるとおりに修正しましょう。 あと、printf(得点を入力しなさい");にタイプミスがあります。 #include <stdio.h> #define NUM 20 int main(void) { int i = 0; // tokutenをiに変更しました int bunpu[] = {0,0,0,0,0,0}; // 分布カウントを格納 float point[NUM]; // 20個の得点を格納 // このfor文は20個の得点を取得し、point[i]に格納している for(i = 0; i < NUM; i++){ printf(得点を入力しなさい"); scanf("%f", &point[i]); } // 得点を判別し、得点ごとにカウントする if ( 20 > i >= 0 ) { bunpu[0] = bunpu[0] + 1; } else if ( 40 > i >= 20 ) { bunpu[1] = bunpu[1] + 1; } else if ( 60 > i >= 40 ) { bunpu[2] = bunpu[2] + 1; } else if ( 80 > i >= 60 ) { bunpu[3] = bunpu[3] + 1; } else if ( 100 > i >= 80 ) { bunpu[4] = bunpu[4] + 1; } else if ( 100 = i ) { bunpu[5] = bunpu[5] + 1; } // 得点の分布を表示 printf(" 0点 以上 20点未満 : %3d\n",bunpu[0]); printf(" 20点 以上 40点未満 : %3d\n",bunpu[1]); printf(" 40点 以上 60点未満 : %3d\n",bunpu[2]); printf(" 60点 以上 80点未満 : %3d\n",bunpu[3]); printf(" 80点 以上 100点未満 : %3d\n",bunpu[4]); printf("100点 : %3d\n",bunpu[5]); return 0; } |
No.15949![]() |
Re:人数の出し方 投稿者---ますお(2004/07/28 13:27:52) |
||
皆さん、わざわざすいませんでした。参考にして頑張ってみます。 |
No.15957![]() |
Re:人数の出し方 投稿者---ニタチ(2004/07/28 15:45:42) |
||
こんなやり方も・・・ #include<stdio.h> int main(void) { int score; int position; int i; int dump[6] = {0}; while (scanf("%d", &score) != EOF) { position = (score>=100) + (score>=80) + (score>=60) + (score>=40) + (score>=20); dump[position]++; } for (i = 0; i < 5; i++) { printf("%3d点以上%3d未満 : %3d\n", i * 20, i * 20 + 20, dump[i]); } printf(" 100点 : %3d\n",dump[5]); return 0; } |