Wieso geht das nicht :(



  • Hallo Lies Forum,
    ich habe ein Notendurchschnittberechnungsprogramm gescchrieben, aber es stürtzt manchmal ab. Aber ich verstehe nicht wieso. Kann mir einer sagen was ich falsch gemacht habe?

    #include <stdio.h>
    
    int main(){
    
        printf ("\n\tNotendurchschnitt Berechner:\n\n\t");
        float Noten[9];
    
        float durchschnitt;
    
        int i;
    
        for (i=0; i<=10; i++){
    
            printf ("\n\n\tGeben sie ihre %d. Note an:\n\n\t", i+1);
    
            scanf ("%f", &Noten[i]);
    
            while (Noten[i] <=0 || Noten[i] >= 7) {
                printf ("\n\n\tBitte geben sie nur Noten von 1 bis 6 an.\n\n\t");
                scanf ("%f", &Noten[i]);
        }
    
           durchschnitt = durchschnitt + Noten[i];
    
    }
        durchschnitt = durchschnitt / 10;
    
        printf ("Ihr Notendurchschnitt is %.2f", durchschnitt);
    
    }
    

    Vielen Dank im vorraus



  • Weil Du 11 Noten eingibst:

    for (i=0; i<=10; i++){
    

    aber nur Platz für 9 hast:

    float Noten[9];
    


  • Belli schrieb:

    Weil Du 11 Noten eingibst:

    for (i=0; i<=10; i++){
    

    aber nur Platz für 9 hast:

    float Noten[9];
    

    Ich gebe 10 Noten ein und habe Platz für 10.

    i=0, i = 1, i=2, i=3, i=4, i=5, i=6, i=7, i=8, i=9. Das sind 10

    Und ich habe Platz für 10 Noten in dem Array weil man bei 0 anfängt zu zählen, also 0,1,2,3,4,5,6,7,8,9 und der Array ist zu ende.

    Oder?



  • float noten[9] hat Platz für 9 Noten, so wie es in den eckigen Klammern steht. Und weil man bei 0 zu zählen beginnt, haben sie die Indizes 0 bis 8.

    Und mit
    for (i=0; i<=10; i++){
    nimmst Du die Indizes 0 bis 10, also 11 Stück.

    Um ein Array von ... [9] zu bearbeiten, nimmt man für gewöhnlich eine for - Schleife, die so aussieht:

    for (i=0; i < 9; i++){
    damit erwischst Du dann nur die im Array vorhandenen Indizes von 0 bis 8.



  • DerDude1212 schrieb:

    Ich gebe 10 Noten ein und habe Platz für 10.

    i=0, i = 1, i=2, i=3, i=4, i=5, i=6, i=7, i=8, i=9. Das sind 10

    Das würde stimmen, wenn die for - Schleife ...; i < 10; ... definiert wäre, Du hast aber da stehen: ...; i <= 10; ...



  • DerDude1212 schrieb:

    Ich gebe 10 Noten ein und habe Platz für 10.

    i=0, i = 1, i=2, i=3, i=4, i=5, i=6, i=7, i=8, i=9. Das sind 10

    Ändere dein Array noten doch mal auf 20 Elemente und ändere sonst nichts an dem Programm.

    Du wirst an deinem Text "Geben sie ihre %d. Note an" selber sehen, wieviel Noten es haben möchte.

    Tipp: Nach der Schleife steht in i die Anzahl der gelesenen Elemente.
    Das kannst du für die Berechnung des Mittelwerts gebrauchen.

    Im übrigen braucht man für diese Aufgabe kein Array.


Anmelden zum Antworten