Problem mit mehrfachen switch Anweisungen
-
Hallo,
ich bin gerade dabei ein Programm zu schreiben bei dem ich mehrere switch Anweisungen verschachteln will. Mein Problem sieht so aus. Das ich mich zwar durch die drei Auswhlfenster wählen kann und die Berechnung auch noch funktioniert aber danach springt mir das ganze wieder auf die zweite Auswahlmöglichkeit zurück. Wo liegt mein Fehler?
Würde mich freuen wenn mir jemand helfen kann.Hier de Anfang des Programms
[code] #include "stdafx.h" #include <iostream.h> int main(int argc, char* argv[]) { double d,sG,l,tb,ez,h,b,G; const double PI=3.14; char werkstoff; char form; char kanten; cout <<"Wählen sie einen Werkstoff aus!" <<endl <<endl; cout <<"Stahl: (1)" <<endl; cout <<"Messing: (2)" <<endl; cout <<"Kupfer: (3)" <<endl; cout <<"Alu: (4)" <<endl; cout <<"MG: (5)" <<endl; cout <<"Nirosta: (6)" <<endl; cout <<"Sonstige: (7)" <<endl <<endl; cout <<"Bitte geben sie die Nummer an: "; //Auswahl des Werkstoffs cin >> werkstoff; cout << endl << endl; switch( werkstoff ) //1.Switch Anweisung { case '1': //1.Fall sG=7,85; cout <<"Wählen sie die Form aus" <<endl <<endl; cout <<"Rundmaterial: (1)" <<endl; cout <<"Flachmaterial: (2)" <<endl; cout <<"Vielkant: (3)" <<endl <<endl; cout <<"Bitte geben sie den Buchstaben ein: "; cin >> form; cout <<endl <<endl; switch( form) //2.Switch Anweisung Form auswählen { case '1': //1. Fall Berechnung Zylindrische Teile cout <<"Geben sie den Durchmesser an: "; cin >> d; cout <<"Geben sie die Laenge an: "; cin >> l; G = ((PI*d*d)/4*sG*l)/1000; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '2': //2. Fall Berechnung flache Teile cout <<"Geben sie die Breite ein: "; cin >> b; cout <<"Geben sie die Hoehe an: "; cin >> h; cout <<"Geben sie die Laenge an: "; cin >> l; G = ((b*h*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '3': //3. Fall Berechnung Vielecke mit 3. Switch zur Ecken Auswahl cout <<"Waehlen sie die Kantenzahl aus:" <<endl <<endl; cout <<"3-kant: 1" <<endl; cout <<"4-kant: 2" <<endl; cout <<"5-kant: 3" <<endl; cout <<"6-kant: 4" <<endl; cout <<"8-kant: 5" <<endl; cout <<"10-kant: 6" <<endl; cout <<"12-kant: 7" <<endl <<endl; cout <<"Geben sie den Buchstaben ein: " <<endl <<endl; cin >> kanten; cout <<endl <<endl; switch( kanten ) //3. Switch zur Eckenauswahl { case '1': //Berechnung bei 3.Kant ez=3; tb=1,299; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '2': //Berechnung bei 4.Kant ez=4; tb=1,000; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '3': //Berechnung bei 5.Kant ez=5; tb=0,908; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '4': //Berechnung bei 6.Kant ez=6; tb=0,866; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '5': //Berechnung bei 8.Kant ez=8; tb=0,829; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '6': //Berechnung bei 10.Kant ez=10; tb=0,812; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; case '7': //Berechnung bei 12.Kant ez=12; tb=0,804; cout <<"Geben sie die Laenge an: "; cin >> l; G=((tb*ez*ez*sG)/1000)*l; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break; default: cout <<" " <<endl <<endl; } //Ende Switch 3 break; default: cout <<" " <<endl <<endl; } //Ende Switch 2 case '2': //2. Fall vom 1.Switch ab hier gleich wie oben sG=8,5; cout <<"Wählen sie die Form aus" <<endl <<endl; cout <<"Rundmaterial: (1)" <<endl; cout <<"Flachmaterial: (2)" <<endl; cout <<"Vielkant: (3)" <<endl <<endl; cout <<"Bitte geben sie den Buchstaben ein: "; cin >> form; cout <<endl <<endl; switch( form) { case '1': cout <<"Geben sie den Durchmesser an: "; cin >> d; cout <<"Geben sie die Laenge an: "; cin >> l; G = ((3.14*d*d)/4*sG*l)/1000; cout <<endl <<endl; cout <<"Das Material wiegt: " <<G <<"Kg" <<endl <<endl; break;
[/code]
-
Ich glaub noch mehr redundanz kann man in deinen code kaum noch reinbringen
hab mal schnell deinen code ein bisschen zusammengehackt...
ohne das zu testen würd ich eher sowas in der art machen.
ist aber auch nicht wirklich schön so aber nicht ganz so katastrophal wie dein vorschlag#include <iostream> #include <cmath> using namespace std; #ifndef M_PI #define M_PI 3.14159 #endif double sG[]={7.85,8.5,1,1,1,1,1}; //hier fehlen noch die dichten für die letzten 5 werkstoffe, im moment wird 1 genommen double ez[]={3,4,5,6,8,10,12}; double tb[]={1.299,1,0.908,0.866,0.829,0.812,0.804}; class Werkstoff{ public : int mat;//Stahl=1,Messing=2,Kupfer=3,Alu=4,Mg=5,Nirosta=6,Sonstige=7; int form;//Rundmaterial=1,Flachmaterial=2,Vielkant=3 int kanten; Werkstoff(){}; Werkstoff(int mat,int form,int kanten){this->mat=mat;this->form=form;this->kanten=kanten;} void setMat(); void setForm(); double getVolumen(); double getGewicht(); }; void Werkstoff::setMat(){ int mat; cout <<"Wählen sie einen Werkstoff aus!" <<endl <<endl; cout <<"Stahl: (1)" <<endl; cout <<"Messing: (2)" <<endl; cout <<"Kupfer: (3)" <<endl; cout <<"Alu: (4)" <<endl; cout <<"MG: (5)" <<endl; cout <<"Nirosta: (6)" <<endl; cout <<"Sonstige: (7)" <<endl <<endl; cout <<"Bitte geben sie die Nummer an: "; //Auswahl des Werkstoffs cin >> mat; cout << endl << endl; this->mat=mat; } void Werkstoff::setForm(){ int form; cout <<"Wählen sie die Form aus" <<endl <<endl; cout <<"Rundmaterial: (1)" <<endl; cout <<"Flachmaterial: (2)" <<endl; cout <<"Vielkant: (3)" <<endl <<endl; cout <<"Bitte geben sie den Buchstaben ein: "; cin >> form; cout <<endl <<endl; this->form=form; if(form==3){ int kanten; cout <<"Waehlen sie die Kantenzahl aus:" <<endl <<endl; cout <<"3-kant: 1" <<endl; cout <<"4-kant: 2" <<endl; cout <<"5-kant: 3" <<endl; cout <<"6-kant: 4" <<endl; cout <<"8-kant: 5" <<endl; cout <<"10-kant: 6" <<endl; cout <<"12-kant: 7" <<endl <<endl; cout <<"Geben sie den Buchstaben ein: " <<endl <<endl; cin >> kanten; cout <<endl <<endl; this->kanten=kanten; } } double Werkstoff::getGewicht(){ double g; if(form==1){ double d,l; cout <<"Geben sie den Durchmesser an: "; cin >> d; cout <<"Geben sie die Laenge an: "; cin >> l; g=M_PI*d*d/4*l/1000; } if(form==2){ double b,h,l; cout <<"Geben sie die Breite ein: "; cin >> b; cout <<"Geben sie die Hoehe an: "; cin >> h; cout <<"Geben sie die Laenge an: "; cin >> l; g=b*h*l/1000; } if(form==3){ double l; cout <<"Geben sie die Laenge an: "; cin >> l; g=l*tb[kanten-1]*ez[kanten-1]*ez[kanten-1]/1000; } return g*sG[mat-1]; } int main(){ Werkstoff w; w.setMat(); w.setForm(); cout <<endl <<endl; cout <<"Das Material wiegt: " <<w.getGewicht()<<"Kg" <<endl <<endl; }
-
Jetzt noch die Eingabe/Ausgabe von der Verarbeitung trennen und es ist egal,
welchen "View" man zum Anzeigen der Daten nutzt.mfg
v R
-
@virtuell Realisticer
kannst ja gerne eine entsprechende Lösung anbieten.
Ich war stark am überlegen ob ich überhaupt darauf antworte...bei dem aufwand den eine vernünftige antwort haben würd sitz ich ja ne stunde. so war das nur ein schnelles copy und paste seines codes