リンクリストの中に入るために2つのif文を作成し、平均より上にある数の数と平均以下の数を確認するためにif文を作成しました。私が理解するためにプログラムを実行すると、ifステートメントは1つの数だけカウントされます。また、プログラムが実行されると、if文の1つだけが呼び出され、両方は呼び出されません。多分私は何かを見過ごしているのだろうか?'CalAverage'関数のif文に関する問題
double CalAverage (NewNumber *start){
int res;
double average = 0;
double total = 0;
int n = 1;
int x = 1;
int y = 1;
/*if (res != 1){
fprintf(stderr, "Something bad happened in CalAverage()\n");
return add;
}*/
while (start->next){
average += start->newNum;
start = start->next;
++n;
}
average += start->newNum;
total = average/n;
if(total < start->newNum){
++x;
printf("Numbers greater than average: %d\n",x);
}else if(total > start->newNum){
++y;
printf("Numbers less than average: %d\n", y);
}
printf("The average is: %lf\n",total);
return total;
return x;
return y;
}
返信文が多すぎます。関数から1つの値だけを返すことができます。 'if'文のうちの1つだけがtrue(あるいは、' total == start-> newNum')でなければ、それらのうちの1つの出力しか見ることができません。別のループがありません。最初に平均を計算すると、リストをもう一度トラバースして、平均以上または以下の場合は各数値に対して印刷する必要があります。 – Robert