• 締切済み

C言語の度数分布の問題

C++についての問題です。 200個の数値があり、 freq[0],freq[1],...,freq[8],freq[9] に,0 以上10未満のデータ数,10 以上20 未満のデータ数,…,80 以上90 未満のデータ数,90 以上100 未満のデータ数がそれぞれ入るようにする問題です。 #include <stdio.h> int main() { int x[] = {30,94,91,42,7,45,37,63,5,51,65, 97,49,82,35,41,2,62,50,86,35,53,98,62,33,2, 79,15,18,13,68,76,32,47,1,11,93,66,92,90,40, 57,3,59,64,10,39,11,1,91,57,86,29,56,91,97, 35,64,56,79,74,95,6,98,16,13,39,35,99,11,36, 11,14,12,42,45,37,13,10,33,57,81,69,86,89,7, 21,40,16,36,27,12,77,15,28,50,7,91,84,24,75, 56,29,29,26,31,56,61,20,65,34,72,87,32,44,67, 37,69,7,72,76,90,43,9,89,97,12,9,77,14,68,28, 17,12,58,51,43,35,84,74,7,92,30,50,67,30,0,98, 1,73,11,29,80,82,57,71,50,85,99,46,38,36,59, 11,33,98,60,3,44,74,98,77,54,62,39,81,56,78, 12,71,27,60,84,96,73,58,31,78,73,98,6,16,77, 51,44,10,30,48,1,29}; int freq[10]={0}; int i,n; この部分だけをうまくやればできるはずなんですが、よくわかりません。 ↓↓↓ for(){ for(i=0,i<10,i++){ if(i*10<=x[] && x[]<(i+1)*10) freq[i]++; } } ↑↑↑ for ( i = 0 ; i < 10 ; i++ ) { printf("%d 以上%d 未満のデータ数:%d", i*10, (i+1)*10, freq[i]); } while(1); return 0; } 10で割るやり方は使わずに、 0以上10未満ならカウントfreq[0]のカウントを1増やす、10以上20未満ならfreq[1]のカウントを1増やす……というのを繰り返しで処理して それをxにある数値全部について繰り返しで処理するという二重構造だと思うのですが 『for』と『if』と『i』と『n』をどう組み立てていいかわかりません。 わかる方よろしくお願いします(>_<) できればその部分を書いて解説いただけるとわかりやすくてありがたいです。

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

for (i = 0; i < 200; i++) { freq[x[i] / 10]++; }

takaisunnzenn
質問者

お礼

ありがとうございます。 しかしnも使って10で割らないやり方を求めています。 先ほどfor二重使用で自己解決したので締め切ります。

関連するQ&A