BunteKuh Geschrieben 22. Juli 2001 Geschrieben 22. Juli 2001 Hi Ihr, ich versuche gerade C++ zu lernen, und habe mir ein kleines Progrämmchen geschrieben. Dieses soll einfach nur vom Benutzer Zahlen einlesen, und diese addieren. Wenn der Benutzer eine negative Zahl eingibt soll das Programm abbrechen und die Gesamtsumme hinschreiben. Wenn ich aber eine negative Zahl eingebe macnt das Programm was komisches, es scheint immer wieder meine Schleife zu durchlaufen, den cin-Befehl jedoch auszulassen (es bricht auch nicht ab). Das versteh ich nicht...hat jemand von euch vielleicht eine Idee warum das nicht geht? Hier noch der Code: #include <stdio.h> #include <iostream.h> int main (int nArgs, char* pszArgs[]) { int nAccVal=0, nInput=0, i=0; for (; { cout << "Gib die " << ++i << ". Zahl ein :"; cin >> nInput; if (nInput < 0) { break; } nAccVal += nInput; } cout << nAccVal; return 0; } [/code] P.S. Ich weiß jetzt nicht wie ich den Smiley aus meiner for-Schleife bekomme, das soll einfach ne Endlos-Schleife mit for und zwei Strichpunkten sein. <FONT COLOR="#a62a2a" SIZE="1">[ 22. Juli 2001 14:24: Beitrag 2 mal editiert, zuletzt von BunteKuh ]</font> Zitieren
Hasi Geschrieben 22. Juli 2001 Geschrieben 22. Juli 2001 1. um das smily raus zu bekommen musst du unten den hacken setzen "Smilies in diesem Beitrag deaktivieren" 2. diese schleife ist etwas unschoen geloest ich wuerde es wie folgt realisieren #include <stdio.h> #include <iostream.h> int main (int nArgs, char* pszArgs[]) { bool reread = true; int nAccVal=0, nInput=0, i=0; while(reread == true) { cout << "Gib die " << ++i << ". Zahl ein :"; cin >> nInput; if (nInput < 0) { reread = false; } else { nAccVal += nInput; } } cout << nAccVal; return 0; } bin mir aber mit der exacten syntax nicht so sicher, ich hab hier zZ keinen compiler, musst es halt ausprobieren <FONT COLOR="#a62a2a" SIZE="1">[ 22. Juli 2001 14:32: Beitrag 1 mal editiert, zuletzt von [Hasi] ]</font> Zitieren
BunteKuh Geschrieben 22. Juli 2001 Autor Geschrieben 22. Juli 2001 Hallo Hasi, danke für den Vorschlag, funktioniert aber auch nicht...also dieses Verhalten ist mir völlig unverständlich. Zitieren
hoagi Geschrieben 22. Juli 2001 Geschrieben 22. Juli 2001 Hi, also ich hab das Programm ausprobiert. Und es klappt eigentlich auch so wie es soll. ?Ist der gepostete Code wirklich identisch mit deinem Programm? ?Erzeugt dein Programm irgend eine Ausgabe? Der Hinweis die Bedingung des Schleifenabbruches nicht irgendwo in der Schleife zu verstecken ist gut, weil es die Lesbarkeit des Programmes verbessert, wobei die reread- Variable eigentlich überflüssig ist. Es reicht deine Input-Variable auf >= 0 zu testen. Hoagi Zitieren
Tachyoon Geschrieben 23. Juli 2001 Geschrieben 23. Juli 2001 Hallo. Ich habe den Code eben mit copy&paste kopiert, ausgeführt und es ging. Da ist kein Fehler im Code. Wenn der wirklich identisch mit dem Code ist, den du in deinem Programm stehen hast, könnte es allenfalls an den Compilereinstellungen liegen. cya Zitieren
BunteKuh Geschrieben 23. Juli 2001 Autor Geschrieben 23. Juli 2001 Oh wie peinlich, das geht tatsächlich...ich habe scheinbar anstatt -1 immer /1 eingegeben (wegen meiner englischen Tastaturbelegung). Tja, und da der Fehler wirklich seltsam ist hab ich halt stundenlang den Code geprüft und keinen Fehler gefunden... Tut mir leid. Trotzdem Danke für die Mühe die ihr euch gemacht habt. Zitieren
Crush1 Geschrieben 23. Juli 2001 Geschrieben 23. Juli 2001 Solche Fehler gibt´s halt und manchmal ist das Naheliegendste nicht daß, wonach man sucht. Ich habe mich mal über seltsame Fehlermeldungen beim Programmaustieg gewundert. Lange hat es gedauert, bis ich bemerkt habe, daß der Fehlercode nichts weiter war als der Tasten-RAW-Code der zuletzt gedrückten Taste! Mit einer eigenen Exit-Message war dann - oh Wunder - der sog. "Fehler" behoben. Vielleicht haben ja andere auch solche komischen Möchtegernfehler gehabt, wäre mal interessant zu hören was einem noch so blödes passieren kann. FEHLER DIE KEINE SIND! Zitieren
Poldi Geschrieben 24. Juli 2001 Geschrieben 24. Juli 2001 den spaß hab ich ständig, da ich laufend zwischen verschiedenen programmiersprachen hin und her wechsel (je nach bedarf und laune meines meisters) ... was zur folge hat, daß man sehr leicht die syntax durcheinanderschmeißt ... mir hilft es immer, wenn ich meine programme jemand anders erkläre, beziehungsweise die fehlerhafte funktion ... dann macht es oft *pling* bei mir und ich sehe wo der fehler lag. ist immer geil, stundenlang suchst du n fehler und findest nix, dann zeigst du dein problem jemand anders und hast selber die lösung gefunden, noch bevor der andere weiß worum es geht ... *narf narf* Zitieren
admINofDAw33k Geschrieben 24. Juli 2001 Geschrieben 24. Juli 2001 @poldi noch lustiger ist es mit z.B. C++Kenntnissen in der Berufsschule zu sitzen! Wenn man da einen Fehler im Programm hat, bekommt man auch noch verwirrende Vorschläge der Lehrer zu hören, die von der Lösung ablenken! *grrr* (Boote halt zum 25ten Mal neu, vielleicht gehts dann!!!!!!) *kopfschüttel* Zitieren
gajUli Geschrieben 24. Juli 2001 Geschrieben 24. Juli 2001 <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von admINofDAw33k: <STRONG>Wenn man da einen Fehler im Programm hat, bekommt man auch noch verwirrende Vorschläge der Lehrer zu hören, die von der Lösung ablenken! *grrr* (Boote halt zum 25ten Mal neu, vielleicht gehts dann!!!!!!) *kopfschüttel*</STRONG> Zitieren
haddock Geschrieben 27. Juli 2001 Geschrieben 27. Juli 2001 Hallo buntekuh, eine Anmerkung habe ich noch zu Benutzereingaben im Allgemeinen: da - wie in Deinem Fall - nicht sichergestellt ist, daß Benutzer nur gültige Eingaben machen (im Gegenteil), ist es immer sinnvoll, kleine oder größere Validierungen einzubauen. bei cin , ebenso wie bei scanf(), bleibt alles ab dem Zeichen, das nicht mehr korrekt interpretiert werden kann, einfach im Eingabepuffer stehen. Abhilfe in C++ bietet die Methode bool ios::good(void), die anzeigt, ob der Puffer vollständig ausgelesen wurde. Beispiel: if( !cin.good() ) { cerr << "Müll im Puffer!" << endl; cin.getline(); // liest den Pufferinhalt aus cin.clear(); // error flags zurücksetzen // hier weitere Anweisungen } Viel Spaß weiterhin! Der Käptn Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.