[gelöst] Problem mit switch
-
Hallo, ich bin ein absoluter Anfänger was Programmieren angeht. Ich versuche mir gerade mit dem Buch "Einstieg in c++" von Arnold Willemer c++ anzueignen und habe ein Problem bei meinem Programm.
Eigentlich führt das Programm selbst alles so aus wie geplant, außer wenn ich bei der Programmauswahl "2" also Lotto auswähle werden die Programme 2 und 3 ausgeführt. Bei "1" funktioniert es wie geplant. Ich sehe keinen Unterschied im Aufruf deshalb wende ich mich jetzt mal an euch und hoffe auf Hilfe.
Vielen Dank im Vorraus.Mein Programm sieht so aus:
#include <iostream> #include <iomanip> #include <cmath> #include <cstdlib> #include <time.h> using namespace std; int main() { int Programmauswahl; cout << "Welches Programm moechten sie starten?" <<endl; cout << endl; cout << endl; cout << "Waehlen sie: " << "1 fuer Mehrwertsteuerberechnungen" << endl; cout << setw(25) << "2 fuer Lotto" << endl; cout << setw(29) << "3 fuer sortieren"<< endl; cin >> Programmauswahl; cout << endl; switch (Programmauswahl) { case 1: cout << "Sie haben sich für die Mehrwertsteuerberechnung entschieden" << endl; cout << endl; int mwst; double Nettopreis, Bruttopreis, mwsteuro; cout << "Bitte geben sie den Nettopreis in Euro an." << endl; cin >> Nettopreis; cout << endl; if (Nettopreis >0) { cout << "Bitte geben sie die Mehrwertsteuer in Prozent an." << endl; cin >> mwst; mwsteuro = Nettopreis * mwst/100; cout << std::setprecision(2) << std::fixed; cout << "Die Mehrwertsteuer betraegt "<< mwsteuro << " Euro." << endl; Bruttopreis = Nettopreis * mwst/100 + Nettopreis; cout << "Der Bruttopreis betraegt " << Bruttopreis << " Euro." << endl; } if (Nettopreis <=0) { cout << "Die Berechnung ist leider nicht moeglich." << endl; } case 2: cout << "Sie haben sich fuer die Lottozahlen entschieden"<< endl; cout << endl; int lotto[6],Zufallszahl; srand(time(0)); cout << "Hier sind ihre Zufallszahlen:" << endl; for (Zufallszahl=0;Zufallszahl<6;Zufallszahl++) { lotto[Zufallszahl] =rand()%49+1; cout << setw(5) << lotto[Zufallszahl] <<endl; } case 3: cout << "Sie haben sich fuer sortieren entschieden"<< endl; const int MAX=5; int feld[MAX], hilf; int i, j, k; srand(time(0)); for (i=0;i<MAX;i++) { feld[i] = rand() % 100 +1; cout << feld[i] << " "; } } return 0; }/edit pumuckl: cpp-Tags spendiert. künftig bitte selbst machen!
-
Eigentlich müssten bei (1) alle drei Zweige ausgeführt werden.
Tipp: Im Kapitel zu switch wurde sicherlich ein Keyword namens "break" erwähnt. Lies Dir den Abschnitt nochmal durch

Tipp 2: Nutze [ cpp] Tags, dann sieht der Code nicht so scheußlich aus.
-
Also wenn das der originalcode ist, dann müsste auch bei "1" nach der Mehrwertsteuer noch Lotto und sortieren kommen.
Schau dir mal im C++-Einsteigerbuch deiner Wahl den Abschnitt zu switch/case nochmal genauer an. Stichwort "break".
Und: Bitte cpp-Tags benutzen (und den Link in meiner Signatur lesen, falls noch ncith geschehen)
-
Rasheel schrieb:
...
Und um dir allgemein das Leben einfacher zu machen: Versuch die Einzüge sauber und einheitlich zu setzen (Erhöht die Lesbarkeit, reduziert den Wartungsaufwand - da du schneller die Zusammenhänge siehsts).
Also entweder:
a) Klammern eine Ebene unter den Scope, auf den sie sich Beziehen (machst du z.B. bei der main-Funktion und einer for-Schleife.
oder
b) Klammern auf der gleichen (eingerückten) Ebene des Scopes (z.B. bei deinem switch, mehreren ifs...).Aber bitte nicht mischen.
Sprich:
// (Bezogen auf die 2 von dir verwendeten Stile, es gibt noch weitere) // Entweder so (die einzige Form die ich in den Firmen die ich war erlebt habe) if(bedingung) { foo() } // oder (Ich weiß das diese Form auch existiert, ich selbst habe die aber noch nicht in Projekten gesehen) if(bedingung) { foo() }Und auch die Scopes solltest du sauber beachten (Nicht wie in deinen case 1-Fall, wo dein zweites if weiter eingerückt ist als dein erstes, obwohl die im gleichen Scope stehen).
-
Ah na klar das kleine Wörtchen break am ende der "Fälle"

Vielen Dank.
Auch das mit den c++ tags hab ich eben rausgefunden.
Und schon kommt das nächste Problem aber da werd ich erst mal selbst rumprobieren
-
Aber wo kann ich jetzt die Überschrift in [Gelöst] editieren?
ich find den button nicht
Ah habs kapiert war beim erstellen nicht eingeloggt. Würde das dann bitte jemand übernehmen der es kann?
Nochmal danke
-
Jinx schrieb:
Würde das dann bitte jemand übernehmen der es kann?
done.