Kontrollieren
-
Ok, da ist ein ganzer Haufen von Fehlern drin! Ein paar Tipps:
- Du legst ein double Array an (Noten), willst dann aber per scanf int Variablen ("%d") einlesen.
- Das erste Element eines Arrays hat den Index 0, nicht 1!
- In deiner letzten Schleife hat j im ersten Durchlauf den Wert 0. Du versuchst u.a., auf Noten[j-3][1] zuzugreifen. Wo willst du da lesen? Das ist im Speicher vor deinem Array, da darfst du nicht lesen!
- Du rückst nicht richtig ein!
Und der wichtigste Tipp: Benutze den Debugger! Nur so findest du schnell Fehler.
-
#include "stdafx.h" #include "stdlib.h" #include "string.h" #include "ctype.h" int _tmain(int argc, _TCHAR* argv[]) { int i, j, l = 1, k = 1, m; double Noten [5][4]; printf ("\nBitte Noten eingeben: "); for (j = 0; j < 4; j++) { printf ("\nGruppe %d\n",l); for (i = 0; i < 5; i++) { scanf ("%s", &Noten[i][j]); } l++; } printf ("\nStatistik:\n"); for (m = 0; m < 4; m++) { printf ("\nGruppe %d:\n",k); printf ("\nKleinster Wert : "); printf ("\nDurchschnitts Wert: %i", (Noten[1][m+1] + Noten[2][m+1] + Noten[3][m+1] + Noten[4][m+1] + Noten[5][m+1])/5); printf ("\nGr\x94sster Wert : "); printf ("\n"); k++; } return 0; }
Hab mal das probiert wil aber auch nicht funktionieren....
-
Das ist nicht dein Ernst, oder?
-
wieso??...so krasse fehler???
....sorry
Der gedankenblitz will bei mir einfach nicht kommen...
-
- Warum versuchst du jetzt, mit scanf einen String ("%s") einzulesen? Lies die Doku, dann siehst du ganz schnell, wie du floats/doubles einlesen kannst.
- Willst du wirklich den Durchschnitt von 4 Werten berechnen, indem du die Summe durch 5 teilst?
- Beim Durchschnitt: nicht [1][m+1] usw., sondern [m][0] bis [m][3].
-
_matze schrieb:
- Warum versuchst du jetzt, mit scanf einen String ("%s") einzulesen? Lies die Doku, dann siehst du ganz schnell, wie du floats/doubles einlesen kannst.
- Willst du wirklich den Durchschnitt von 4 Werten berechnen, indem du die Summe durch 5 teilst?
- Beim Durchschnitt: nicht [1][m+1] usw., sondern [m][0] bis [m][3].
- Doku werde ich sofort lesen
- Es sind fünf Werte, habe ausversehen zuwenige grnommen, nicht vier
- Habe ich schon erledigt....
mfg 08mmarte
-
Ok!
Doku zu scanf: http://msdn.microsoft.com/de-de/library/9y6s16x1(VS.80).aspx
-
hmmmm....werde irgendwie nicht wirklich schlau aus der doku...kannstu du mir helfen _matze???....
-
Das unterscheiden sich scanf und printf, aber hier:
http://msdn.microsoft.com/de-de/library/xdb9w69d.aspx
solltest du erkennen, was du statt "%d" bei scanf nehmen musst. Bei printf sieht es etwas anders aus:
http://msdn.microsoft.com/de-de/library/hf4y5e3w.aspx
MfG,
Probe-Nutzer
-
Und hast du's?
-
_matze schrieb:
Und hast du's?
Geht so, Hab noch auf Galileo Computin nagesehen und da wird mit %d eingelesen, dann stimmt es so???
weil aus [url]http://msdn.microsoft.com/de-de/library/xdb9w69d.aspx [/url] werde ich einfach nicht richtig schlau...weiss auch nicht warummfg 08mmarte
-
Aber mit %d werden Ganzzahlen (Integer) eingelesen! Du willst doch double-Werte einlesen, richtig? Was sollen das überhaupt für Noten sein? Schulnoten??
Wenn du double verwenden willst, probier's mal so:
double Noten [4][4]; scanf("%le", &Noten[i][j]);
-
_matze schrieb:
Aber mit %d werden Ganzzahlen (Integer) eingelesen! Du willst doch double-Werte einlesen, richtig? Was sollen das überhaupt für Noten sein? Schulnoten??
Wenn du double verwenden willst, probier's mal so:
double Noten [4][4]; scanf("%le", &Noten[i][j]);
Mit %e hab ich es schon probiert aber mt %le nicht mal schaun...
-
Du hast auch die Indizes vertauscht:
//falsch! scanf("%le", &Noten[i][j]); //richtig: scanf("%le", &Noten[j][i]);
-
Danke, aber leider gibt es jetzt als Durchschnitt, wenn ich bloss 2 eingebe, 2.00e+000 aus...wie kannich das ändern
printf ("\nDurchschnitts Wert: %.2le", (Noten[m][0] + Noten[m][1] + Noten[m][2] + Noten[m][3] + Noten[m][4])/5);
-
Du musst durch 5. (double) teilen, nicht durch 5 (int).
-
wie meinst du das??....verstehe es nicht ganz...sorry
-
Wenn du
5
schreibst, ist das eine ganzzahlige Konstante. Bildest du einen Quotienten mit einer beliebigen anderen Zahl und dieser int-Konstante, dann ist das Ergebnis ebenfalls ein Ganzzahlen-Wert. 5/2 ist also 2!
Du kennst das doch noch aus der Grundschule. 5/2=2 Rest 1.
Deshalb muss deine Konstante auch ein Fließkommawert sein, wenn du einen Fließkommawert als Ergebnis haben willst. Dazu schreibst du
5.
oder
5.0
, so dass double/double=double ist.
-
Wissen macht ahhh!!.....
jetzt habe ich es verstanden
Danke...
-
Ich denke du hast das gemeint:
printf ("\nDurchschnitts Wert: %.2le", (Noten[m][0] + Noten[m][1] + Noten[m][2] + Noten[m][3] + Noten[m][4])/5.0);
Stimmt es??
wenn ja habe ich an einem anderen ort einen Fehler denn es funktioniert immer noch nicht...