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.