Problem mit while - Schleife
-
Hallo, ich hab kürzlich mein Programm umgeschrieben, doch es funktioniert nicht richtig.
Kann sich das bitte kurz jemand angucken? Wär echt nett!

if(waehrung == 1) { system("cls"); double betrag; cout << " CHF in W"<<ae<<"hrungsumrechnung in Euro" << endl; cout << " -----------------------------------" << endl; cout << " Bitte geben Sie den Betrag ein: "; cin >> betrag; cout << " " << betrag << " CHF entsprechen "; cout << betrag * 0.66 << " Euro" <<endl; nochmals: do{ cout << " M"<<oe<<"chten Sie noch noch eine Umrechnung durchf"<<ue<<"hren? (j/n)"<<endl; cout << " Dr"<<ue<<"cken Sie H um zum Hauptmen"<<ue<<" zur"<<ue<<"ck zu kehren."; wiederholen = getch(); if(wiederholen == 'j' || wiederholen == 'J') { goto waehrungsmenue; //Sprung zu Waehrungsgemenue } if(wiederholen == 'h' || wiederholen == 'H') { goto hauptmenue; } else if(wiederholen == 'n' || wiederholen == 'N') { danke(); } }while(wiederholen =! 'h' && wiederholen =! 'H' && wiederholen =! 'j' && wiederholen =! 'J' && wiederholen =! 'n' && wiederholen =! 'N') }Das Problem liegt in der untersten while Schleife denk ich mal.
Fehlermeldung vom Compiler:
Zeile der while Schleife:
E:\Dokumente und Einstellungen\Besitzer\Desktop\C++\Universalrechner.cpp non-lvalue in assignmentUnter der while Schleife:
E:\Dokumente und Einstellungen\Besitzer\Desktop\C++\Universalrechner.cpp expected `;' before '}' tokenMfG Shivan
-
In welcher Zeile erscheint der Fehler denn?
-
Wie gesagt in Zeile 28 bzw. 29
-
ich würd dir drigend empfehlen, ein Buch mit den Grundlagen zu besorgen (primer oder so)
1. vermeide goto! ließ mal nach was break ist
2. die if-else abfragen machen keinen sinn, da du ja im while kopf die ganze sache nochmal abfragst
3. der ungleichoperator lautet != und nicht =! (sonst weist du den negierten bool wert des char literals zu)
4. statt wiederholen = getch() nimm lieber std::cin
-
Okey, danke für die Tipps!
-
Quelltexte mit 'goto' schau ich mir immer wieder gern an

Wenn der Quelltext nicht zu lang ist, poste ihn mit allen Sprungmarken.Deine Formatierung des Quelltextes irritiert mich ein wenig -
wann rückst du deinen Quelltext weiter ein und wann nicht?MfG f.-th.
-
Den Code poste ich hier besser nicht, er umfasst über 1100 Zeilen.

Ich rücke meinen Code ein, wenn geschwungene Klammern da sind, also z.B. :if (text == text2 { cout << "Text"; }Was genau sollte ich anders machen?
Ach ja, das Problem oben konnte ich jetzt lösen, danke!
-
langer quelltext mit goto ist unbedingt zu vermeiden. 1. wird es extrem unübersichtlich und 2. überspringt man gerne mal deklarationen oder andere wichtige teile. ich behaupte mal, das so gut wie jedes problem ohne goto zu lösen ist.
Zum Einrücken: in deinem Eingangspost besteht das einrücken nach der ersten if bedingung aus 2 tabs und das noch vor der geschweiften klammer. danach ist es nur ein leerzeichen. jetzt postet du code, wo du nach der geschweiften klammer einrückst und zwar auch wieder mit 2 tabs. Bisschen inkonsistent

-
Meine Frage zum einrücken war auf die Zeile 12 zu Zeile 13 gemünzt.
Ich weiß jetzt nicht wie universell dein Rechner ist, hab aber den Verdacht, wenn du deine Schleifen optimierst das du deinen Quelltext deutlich kürzer und einfacher lesbar für dich und andere schreiben kannst.
Nur geraten, wie viel Klammern öffnest du maximal gleichzeitig?
MfG f.-th.
-
Naja bei meinem Editor sind irgendwie die Tabs unkonsistent, ich benutze DevC++..

Aber wenn nur das mit der Länge der Einzüge nicht stimmt, bin ich ja noch beruhigt!
Hat man hier die Möglichkeit Dateien an einen Comment anzuhängen?
-
Bei Zeile 12 und 13 hab ich keine Einzüge gemacht, den Code hab ich da auch nur erstmal vorübergängig geschrieben um etwas auszuprobieren.
Ich öffne in meinem Code oft mehrere (3 oder 4) geschwungene Klammern miteinander, ist das schlimm?
-
shivan schrieb:
Naja bei meinem Editor sind irgendwie die Tabs unkonsistent, ich benutze DevC++..

Aber wenn nur das mit der Länge der Einzüge nicht stimmt, bin ich ja noch beruhigt!
Hat man hier die Möglichkeit Dateien an einen Comment anzuhängen?
Nein, aber du kannst sie bei einem Freehoster hochladen

-
shivan schrieb:
Bei Zeile 12 und 13 hab ich keine Einzüge gemacht, den Code hab ich da auch nur erstmal vorübergängig geschrieben um etwas auszuprobieren.
Ich öffne in meinem Code oft mehrere (3 oder 4) geschwungene Klammern miteinander, ist das schlimm?
So könnte man einrücken. Extrembeispiel:
if (...) { if (...) { do { DoSomething1(); if (...) { for (...) { // ... DoSomething2(); } } } while (...); } DoSomething3(); }
-
Freehoster? Wie funktioniert das genau?
-
3 bis 4 geöffnete Klammern sollten noch lesbar sein.
Du hast bei deinem Beispiel aber schon mindestens 4 geöffnet.Warum nimmst du den DEV?
Hast du schon mal den Code::Blocks mit z.B. mit dem MinGW oder einem anderen Compiler getestet? Da kannst du deinen Quelltext, auch nachträglich, mit 2 oder 3
Mausklicks formatieren.MfG f.-th.
-
Nein, den hab ich noch nie getestet.
Ich benutze DevC++, weil wir den in der Schule benutzen und ich mich dran gewöhnt hab, doch ich werde mir den andern auch mal angucken. Wichtig ist mir nur, das er Freeware ist.
-
Ich habe hier meinen Source Code raufgeladen: http://ul.to/v47xr7
Ich muss meine Aussage von vorhin korrigieren, ich habe viel mehr als 3, 4 Klammern gleichzeitig geöffnet!
Vielleicht könnt ihr es mal angucken und sagen, was ihr davon haltet und was ich verbessern kann.
Zudem hab ich noch ein Problem, meine Addition bzw. Subtraktion Funktion im Programm gibt ganz komische Zahlen aus, hat aber vorhin tadellos funktioniert, obwohl ich nichts daran verändert hab.
Kann sich das jemand anschauen? Wär wirklich nett, denn ich weiss nicht mehr weiter

Addition:
Zeile 512
Subtraktion:
Zeile 551
MfG Shivan
-
Ich hab doch kürzlich wo gelesen, dass DevC++ ziemlich schlecht ist.
Ich würd dir Code::Blocks empfehlen oder Visual C++ die Express-Edition.Wobei ich mehr zu Code::Blocks tendiere:
Code::Blocks: http://www.chip.de/downloads/Code-Blocks_32146961.html
VC++: http://www.microsoft.com/germany/express/download/downloaddetails.aspx?p=vcpp
Lg Mentras
-
Danke dir, dann werd ich gleich mal Code::Blocks ausprobieren!
Ich finde persönlich finde DevC++ auch nicht wirklich gut, obwohl ich keine Vergleiche habe, da erst mit dem und dem normalen Windows Editor C++ programmiert habe.
-
Code::Blocks macht mir auf jedenfall schon einen ganz guten Eindruck, vorallem dass er die Zusammenhänge der Klammern anzeigt und sie sich ausblenden lassen.
Danke nochmals!

-
Du solltest dir unbedingt Funktionen genauer anschauen. In deinem Code ist so viel Code, der sich wiederholt. Das macht ihn natürlich unnötig lang.
Die Gotos machen den Code schließlich noch unübersichtlicher.Warum dein Code nicht so funktioniert, wie du das willst, lässt sich wegen des sehr unübersichtlichen Codes auch nicht so einfach sagen.