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 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;



  • Ö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.


Anmelden zum Antworten