Kontrollieren
-
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...
-
Übrigens:
int i=5/2; //Ergebnis der Ganzzahlen-Division ist 2 int i=5%2; //% = Modulo-Operator: REST der Ganzzahlen-Division ist 1;
-
Dann vergleiche mal hiermit:
#include <stdio.h> #include <conio.h> int main() { int i, j, l = 1; double Noten[4][4]; printf ("\nBitte Noten eingeben: "); for (j = 0; j < 4; j++) { printf ("\nGruppe %d\n",l); for (i = 0; i < 4; i++) { scanf("%le", &Noten[j][i]); } l++; } printf ("\nStatistik:\n"); for (j = 0; j < 4; j++) { printf ("\nGruppe %d:\n",j+1); printf ("\nKleinster Wert : "); printf ("\nDurchschnitts Wert: %f", (Noten[j][0] + Noten[j][1] + Noten[j][2] + Noten[j][3])/4.); printf ("\nGr\x94sster Wert : "); printf ("\n"); } while(!_kbhit()); return 0; }
In Ordnung ist das Ganze aber noch lange nicht...
-
08mmarte schrieb:
denn es funktioniert immer noch nicht...
Sowas ist keine ausreichende Fehlerbeschreibung! Wenn irgendetwas nicht klappt, dann beschreibe, was nicht klappt, ok?
-
Bei mir sieht es nun so aus:
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int i, j, l = 1; 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 ("%le", &Noten[j][i]); } l++; } printf ("\nStatistik:\n"); for (j = 0; j < 4; j++) { printf ("\nGruppe %d:\n", j+1); printf ("\nKleinster Wert : "); //Folgt noch printf ("\nDurchschnitts Wert: %.2le", (Noten[j][0] + Noten[j][1] + Noten[j][2] + Noten[j][3] + Noten[j][4])/5.); // gibt 2.00e+000 aus printf ("\nGr\x94sster Wert : "); //Folgt noch printf ("\n"); } return 0; }
-
Nicht double Noten [5][4], sondern double Noten [4][5] ...
-
Aber wie bringe ich das e+000 weg?
-
Gib es mit %f aus.
-
Gib es mit %f aus.
-
Danke, jetzt funktioniert es endlich...
mfg 08mmarte
-
EDIT: Sorry für Trippelpost, das Forum spinnt mal wieder (PHP Error)...
-
Habe ich schon....
Spinnt deinPc oder so??