Einfache code mit malloc
-
Hallo zusammen
Ich möchte mit dynamischem Speicher den Durchschnitt von angegebenene Zahlen rechnen. aber aus irgendeinem Grund funktioniert die code nicht....sieht jemand ein wo das Problem liegt?danke
int main (int argc, char *argv[]) { int size=0; int count=0; int nums,sum,i; int*numb=malloc(sizeof(int)*size); printf("Geben Sie die Zahlen an. mit 0 enden:\n"); if (numb == NULL) { //überprüfen ob Heap frei ist printf("Error"); return 0; } //solange bis Enter gedrückt wird while(getchar()!='\n'){ scanf("%d",&nums); numb[count]=nums; count++; } if(nums=='0'){ for(i=0;i<=count;i++){ sum+=numb[i]; } printf("Der Durchschnitt lautet %d", sum/count); } free(numb); return 0; }
-
Denk mal nach, wie groß wohl der Speicherblock in Zeile 6 ist.
C ist eine imperative Sprache mit "eager evaluation".
int a = 5; int b = a; a = 6; printf("%d", b); // 5
Da sind übrigens noch mehr Fehler im Code. Bei den meisten kann ich nicht einmal erahnen, was du dir überhaupt dabei gedacht hast, daher fällt es mir schwer, sie zu korrigieren. Fehlerhafte Zeilen: 17, 23 und 27 zusammen mit 5.
P.S.: Semi-Offtopic: Wozu die Zahlen überhaupt zwischenspeichern? Rechne doch sofort die Summe aus!
-
0 ist etwas anderes als '0'.
Für Mittelwerte sind Ganzzahltypen eher ungeeignet.
Zudem wirst du so deinen Fehler mit dem mitzählen sehr schlecht finden.Das Programm wird sich auch nicht bei 0 beenden.