成績を含む配列を指定すると、成績の度数分布を含む小さな配列を返す computeFrequencies という関数を追加する必要があります。(これはプログラム全体のほんの一部です)
私はこれを作成しましたが、私はcに完全に慣れていないため、何が間違っていたのかわかりません: 15:29: 注: 'grades' の以前の定義はここにありました。
誰でも私を助けることができますか?どうもありがとう
void computeFrequencies(int grades[], int freq[10]){
int i, grades[];
int length=100;
for(i=0; i<length; i++){
grades[i]=i;
switch(i){
case 1: freq[1]++;
break;
case 2: freq[2]++;
break;
case 3: freq[3]++;
break;
case 4: freq[4]++;
break;
case 5: freq[5]++;
break;
case 6: freq[6]++;
break;
case 7: freq[7]++;
break;
case 8: freq[8]++;
break;
case 9: freq[9]++;
break;
default: freq[10]++;
}
}
}
回答ありがとうございます。エラーがなくなったにもかかわらず、プログラムが動作しません。私のプログラムは、特定の成績の度数のヒストグラムを表示する必要があります。誰でも私を助けることができますか?
入力ファイルは 1.in と呼ばれ、次の内容が含まれます。
./a.out < 1.in を使用して実行します
出力は次のようになります。
. . . * . * . . . .
. . . * . * . * . .
. . * * . * * * * .
. * * * . * * * * *
* * * * * * * * * *
1 2 3 4 5 6 7 8 9 10
コード:
#include <stdio.h>
#include <stdlib.h>
int *readGrades() {
int x, count;
scanf("%d", &count);
int *grades = malloc(count * sizeof(int));
for (x = 0; x < count; ++x) {
scanf("%d", &grades[x]);
}
return grades;
}
void computeFrequencies(int grades[], int freq[10]){
int i;
int length=100;
for(i=0; i<length; i++){
grades[i]=i;
switch(i){
case 1: freq[1]++;
break;
case 2: freq[2]++;
break;
case 3: freq[3]++;
break;
case 4: freq[4]++;
break;
case 5: freq[5]++;
break;
case 6: freq[6]++;
break;
case 7: freq[7]++;
break;
case 8: freq[8]++;
break;
case 9: freq[9]++;
break;
default: freq[10]++;
}
}
}
int arrayMax(int length, int arr[]) {
int i, max = arr[0];
for (i=1; i < length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
void printHistogram(int freq[10]){
int highestGrade = arrayMax(10,freq);
int x;
int y;
for(x=highestGrade; x>0; x--) {
for(y=1; y<=10; y++) {
if(freq[y] < highestGrade && x > freq[y]) {
if(y==10) {
printf(".\n");
}
else {
printf(". ");
}
} else {
if(freq[y] <= highestGrade && x <= freq[y]) {
if(y==10) {
printf("*\n");
}
else {
printf("* ");
}
}
}
}
}
printf("\n");
printf("1 2 3 4 5 6 7 8 9 10\n");
}
int main(int argc, char *argv[]) {
int *grades;
int frequencies[10];
grades = readGrades();
computeFrequencies(grades, frequencies);
arrayMax(10,frequencies);
printHistogram(frequencies);
return 0;
}