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』をどう組み立てていいかわかりません。
わかる方よろしくお願いします(>_<)
できればその部分を書いて解説いただけるとわかりやすくてありがたいです。
補足
まず、御回答ありがとうございます。 空き番は使われてない番号です。 s_noは新しい表示しようとする番号です。 s_no=3 は 3とういう値です。 やりたいことは順番を変えること。 添付した画像について説明なんですけど、 まず、5つの例を示しました。 1番目の例は順番2を4(s_no)に変更した。 4(s_no)から5まで値が全部使われた(空き番なし) 2が使われてない番号になる 4から3一つずつ減る 2番目の例も順番2を4に変更した。 4(s_no)から5まで 使われてない(空き番)5がある。 元の4が5になる。 3番名の例は4を2に変更した。 2(s_no)から5まで使われてない番号4(空き番)がある。 元の2が3になり、元の3が4になる。 4番目は2を3に変更した。 3(s_no)から5まで使われてない番号4(空き番)がある。 元の3が4になる 5番目は3を1に変更した。 1(s_no)から5まで使われてない番号3(空き番)がある。 元の1が2になり、元の2が3になる。 すみません。説明が不十分でした。