Ich habe zwei if-Anweisungen erstellt, um in die verknüpfte Liste zu wechseln und zu überprüfen, wie viele Zahlen über dem Durchschnitt liegen und wie viele unter dem Durchschnitt liegen. Wenn ich das Programm nach meinem Verständnis ausführe, zählen die if-Anweisungen nur eine Zahl. Wenn das Programm ausgeführt wird, wird außerdem nur eine der if-Anweisungen aufgerufen, nicht beide. Vielleicht übersehe ich etwas?Probleme mit if-Anweisungen in der Funktion 'CalAverage'
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;
}
Sie haben zu viele Rückmeldungen; Sie können nur einen Wert von der Funktion zurückgeben. Nur eine der 'if'-Anweisungen kann true sein (oder keine, 'if total == start-> newNum'), so dass Sie nur die Ausgabe von einer von ihnen sehen. Du verpasst eine weitere Schleife. Zuerst berechnen Sie den Durchschnitt, dann müssen Sie die Liste erneut durchlaufen und für jede Zahl drucken, wenn sie über oder unter dem Durchschnitt liegt. – Robert