(While-Schleife)Thema: Quartalsumsätze für 3 Unternehmen
-
Schönen Guten Tag! Ich bin total verzweifelt! Kann mir bitte jemand weiterhelfen?
Meine Aufgabenstellung lautet, In jedem Quartal für Unternehmen A, B und C jeweils in jedem der 3 inbegriffenen Monate einen Umsatz eingeben zu können. Das funktioniert auch. Ich hab hierzu eine while Schleife in eine while Schleife in eine while Schleife verpackt.
Nun soll das Programm aber beendet werden, wenn der Benutzer eine 0 eingibt.
??????????????
Ich habe es mit if else, switch case und anderen Anweisungen in der Schleife versucht, jedoch erfolglos. Bitte helft mir.Hier mein Quellcode:
#include<iostream.h> void main() { int monat; int quart; float umsatz; float gesamt; char unter; const char ENDE[] = "( Bei Eingabe von 0.0 wird das Programm beendet )"; // if ( umsatz = '0' ) goto ende; quart = 0; while ( quart < 4 ) { quart = quart + 1; cout << quart << ". " << "Quartal" << endl; unter = '@'; while ( unter < 'C' ) { unter = unter + 1 ; cout << "Unternehmen " << unter << endl; monat = 0; while ( monat < 3 ) { monat = monat + 1; cout << "Umsatz Monat " << monat << ":" << endl; cout << ENDE << endl; cin >> umsatz; cout << endl; } gesamt = umsatz + umsatz + umsatz; cout << "Gesamtumsatz Unternehmen " << unter << ": " << gesamt; cout << endl << endl << endl << endl << endl; } //ende: cout << endl; } }Ich danke schon einmal im Vorraus.
MFG Tray
-
Erstmal solltest du dir klar sein, daß jeder Durchlauf der innersten Schleife die vorhergehenden Werte überschreibt (das heißt, die Eingaben für Januar und Februar werden komplett ignoriert).
Zweitens: Mit return kannst du die Funktion (und da du in der main() bist, damit das gesamte Programm) kurz und schmerzlos verlassen. Wenn dir das ein wenig zu radikal ist - mit break; verlässt du die aktuelle Schleife und mit continue kehrst du zurück zur Schleifenbedingung.
Drittens: Es heißt
#include <iostream>(denke an den Namensraum "std::") undint main().
-
Das ist echt sehr radikal!!!
Nun ja, wo soll ich break einfügen damit der Benutzer bei einer Eingabe von 0 das Programm beenden kann. wenn ich es nach das C-in setzt, bekomme ich nur ein paar endlines geschenkt
monat = 0; while ( monat < 3 ) { monat = monat + 1; cout << "Umsatz Monat " << monat << ":" << endl; cout << ENDE << endl; cin >> umsatz; break; // HIER???? :confused: cout << endl; }
-
genau an dieser Stelle, nur solltest du es in eine if()-Abfrage kapseln:
if(umsatz==0)break;(Anmerkung: Das beendet nur die innerste Schleife, d.h. das Programm wird damit weitermachen, den Gesamtumsatz zu berechnen und anschließend die Quartalsdaten des nächsten Unternehmens abzufragen)
PS: persönlicher Tip: Wenn du anstelle von [code]-Tags [cpp] verwendest, sehen deine Quelltexte noch etwas besser aus

-
Ich hab jetzt das if ( umsatz == 0 ) break; nach jeder Schleife gesetzt und es funktioniert alles. Oh klasse alter Freund. Vielen Vielen Dank, nach stundenlangem grübeln und durchblättern verschiedener Bücher, ist geschafft. Ich danke dir, du bist besser als Data Becker, Franzis' e.t.c.
Nochmals Danke.Ich mach mich jetzt an die nächste Geschichte.
Also vielleicht bis bald.

