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;
    }
    

  • Mod

    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.


Anmelden zum Antworten