Problem mit mehrfachen switch Anweisungen jetzt mit Tags
-
Hallo
habe noch ein paar Hinweise sazu geschrieben hoffe jetzt ist es deutlicher#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 2case '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;
-
Ömm... ja die Kommentare sind schon mal ein Fortschritt, aber wie wäre es mal mit Code Tags?
Du kannst dein Posting auch mit "editieren" im nachhinein verändern :D. Sonst musst du ja immer einen neuen Thread aufmachen und ein Moderator haut dich wegen Doppel-Posting.
-
#include "stdafx.h" #include <iostream> using namespace std; 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;
So, erstma die tags rein
mfg
v R
-
Habe nur mal kurz überflogen. (Respekt wenn du durch die Verschachtelung noch durchsteigst)
Dabei ist mir sowas aufgefallen:tb=1,000;
tb=0,908;
usw.
Das ist schonmal Fehler Nr 1.
Ändern in:tb=1.00;
tb=0.908;
...
-
double d,sG,l,tb,ez,h,b,G;
Den Code kannst du anschließend immernoch verschlüsseln lassen. Das musst du nicht gleich beim Programmieren machen. Vor allem, wenn du den Code hier zeigen willst ist es ungünstig.
endl ist ein Objekt, dass den Stream dazu veranlasst zu fushen und anschließend ein newline ausgibt.
ein
cout << "\n\n";
ist doch wesentlich kürzer und übersichtlicher, als ein
cout << endl << endl;
. 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;
Das könnte man auch einfach so forumlieren:
. cout << "Wählen sie einen Werkstoff aus!\n\n" "Stahl: (1)\n" "Messing: (2)\n" "Kupfer: (3)\n" "Alu: (4)\n" "MG: (5)\n" "Nirosta: (6)\n" "Sonstige: (7)\n\n"
dadurch sieht es schonmal was netter aus.
dreifach verschachtelte Switches sind mir zu viel und in dem Code kommen Funktionen vor, die länger sind, als das, was auf meinen Bildschirm passt. Mit sowas arbeite ich nur sehr ungern und hier macht es absolut keinen Sinn.