Zeugnisnote ausrechnen
-
Jetzt hänge ich wieder. Stimmt das soweit oder hab ichs noch nicht verstanden?

Ich kann eine Note eingeben, dann kommt immer eine Fehlermeldung..#include <iostream> #include <string> using namespace std; int main() { vector<float> zahlen; int anzahl; float noten; float ergebnis; cout << "Hier können Sie Ihre Zeugnisdurchschnittsnote ausrechnen." << endl; cout << "Wie viele Fächer haben Sie?\t"; cin >> anzahl; cout << endl << endl; cout << "Geben Sie jetzt Ihre Noten ein: "; cin >> noten; while(noten != "=") { zahlen.push_back ( noten ); //noten hinzufügen cin >> noten; //einlesen } ergebnis = noten / anzahl; cout << "Ihr Schnitt ist: "; cout << ergebnis; return 0; }
-
Leider sehr viele Fehler... Du bist auf dem Holzweg

1. Du kannst keinen float-Wert mit einem char vergleichen (Zeile 20).
2. Zeile 26: Was soll das zein? Du teilst die letzte eingegebene Note durch die gelesene Anzahl der Noten!? Wofuer hast du dir dann den float-vector erstellt? Im Uebrigen braeuchte man fuer diese Berechnung gar keinen Container...Musst du das mit dem "=" unbedingt machen? Wenn ja, gaebe es da zwei Loesungen: 1. Die Einfache: Du benutzt fuer Noten ein char statt float - chars haben jedoch keine Kommastellen...
2. Der Umweg: Stichwort stringstreams
Wenn nicht, wurde ich das anders loesen. Evtl. mit einer zusatzlichen Eingabeaufforderungen, inder gefragt wird, ob noch eine weitere Note einzulesen ist.Viel Erfolg beim lernen...
Gruss
Cartman
-
OK. Mein Beispiel war vlt. ein wenig zu weit weg von deinem..(aber immerhin kennst du jetzt vector) Ist auch so verdammt schwer nicht gleich alles zu verraten.
Das mit dem = ist so wirklich blöde. Du kannst allerdings auch eine sicher ungültige Zahl als Abbruchargument nehmen (wenn du dich nicht auch noch mit stringstreams beschäftigen willst). Also z.B -1.0f oder so. (oder gleich alles, bis auf das, was Sinn macht).
Das mit dem vector habe ich absichtlich erwähnt, weil es imo natürlicher ist das auf die Art zu lösen, als gleich alles in die Berechnung einfliesen zu lassen und dann mit einem Counter (oder eingegebene Zahl) das zu lösen. Man will ja schliesslich eine beliebige Anzahl von Noten einlesen und dann eine Berechnung durchführen. Und nicht zuerst noch irgendwie die Anzahl im vornherein eingeben, oder etwas "frickliges" über Counter zu machen. Und den schönen Nebeneffekt natürlich, dass er mit vector vertrauter wird, was vor allem für Anfänger nervenschonender sein kann, als das mit Arrays zu machen.
-
#include <iostream> using namespace std; int main() { double anzahl=0; double summe=0; cout << "Hier können Sie Ihre Zeugnisduchschnittsnote ausrechnen." << endl; int note; while(cin>>note) { summe+=note; anzahl+=1; } double durchschnitt=summe/anzahl; cout<<durchschnitt; return 0; }
-
Kurze Frage volkard ... Wie kommt man aus der While-Schleife wieder raus oO?
-
FreakY<3Cpp schrieb:
Kurze Frage volkard ... Wie kommt man aus der While-Schleife wieder raus oO?
mit = statt einer note natürlich.
-
Ja, das programm kapier sogar ich und es funzt :p
Danke volkard, danke auch an drakon und die anderen

wenn ich wieder Fragen hab dann melde ich mich
-
Tox!c schrieb:
Ja, das programm kapier sogar ich und es funzt...
Ich will ja nicht fies sein, aber weißt Du wirklich, wieso die
while-Schleife abbricht, wenn man z.B. ein = eingibt?
-
Tachyon schrieb:
Tox!c schrieb:
Ja, das programm kapier sogar ich und es funzt...
Ich will ja nicht fies sein, aber weißt Du wirklich, wieso die
while-Schleife abbricht, wenn man z.B. ein = eingibt?ich vermute, daß ein = dafür sorgt, daß der integer nicht korrekt eingelesen werden kann.
die rückgabe von cin>>note ist cin.
und das müßte zusammen mit http://www.cppreference.com/wiki/io/fail
dafür sorgen, daß die schleife abbricht.
-
Ich hab halt gedacht, da man ja eine Interger eingeben muss, und "=" kein Integer ist, dass deshalb die Schleife abgebrochen wird.
So wie volkard das auch meint.
Oder?
-
Tox!c schrieb:
Ich hab halt gedacht, da man ja eine Interger eingeben muss, und "=" kein Integer ist, dass deshalb die Schleife abgebrochen wird.
So wie volkard das auch meint.
Oder?
Genau. Das einlesen in einen Integer war nicht erfolgreich, also wird das fail bit gesetzt und die Schleife abgebrochen.