dimanche 17 novembre 2019

Why multiple switches in C++ doesn't work together

I used a bunch of switches in c++ and they don't work together. Like in first menu only switch 'W' starts, but switch 'M' always makes a closing window. Why? I can't find answer. The code is long and Polish, don't care about characters.

#include <iostream>
#include <conio.h>
#include <iomanip>
#include <limits>
#include<string.h>
#include <string>

using namespace std;

std::string PL( const char * text )
{
    std::string result;
    for(; * text; text++ )
    switch( * text )
    {
    case 'ケ': result += static_cast < char >( 0xa5 ); break;
    case '・: result += static_cast < char >( 0x86 ); break;
    case '・: result += static_cast < char >( 0xa9 ); break;
    case 'ウ': result += static_cast < char >( 0x88 ); break;
    case '・: result += static_cast < char >( 0xe4 ); break;
    case '・: result += static_cast < char >( 0xa2 ); break;
    case '・: result += static_cast < char >( 0x98 ); break;
    case 'ソ': result += static_cast < char >( 0xbe ); break;
    case '・: result += static_cast < char >( 0xab ); break;
    case '・': result += static_cast < char >( 0xa4 ); break;
    case 'ニ': result += static_cast < char >( 0x8f ); break;
    case 'ハ': result += static_cast < char >( 0xa8 ); break;
    case '」': result += static_cast < char >( 0x9d ); break;
    case 'ム': result += static_cast < char >( 0xe3 ); break;
    case 'モ': result += static_cast < char >( 0xe0 ); break;
    case '・: result += static_cast < char >( 0x97 ); break;
    case 'ッ': result += static_cast < char >( 0xbd ); break;
    case '・: result += static_cast < char >( 0x8d ); break;
        default: result += * text; break;
    }
    return result;
}

int main()
{

    long double x,y;
    using namespace std;
    char glowne,wej,wyj;
    cout << PL("Witaj drogi uソytkowniku!")<<endl;
    cout << PL("Wybierz rodzaj jednostek wagi(W) czy miary(M)")<<endl;
    cin >> glowne;

    switch(glowne) {
        case 'W':{
        cout << PL("Uwaga! mg=m g=g dag=d kg=k q=q t=t") << endl;
        cout << PL("Podaj jednostk・wej彡iowケ: ");
        cin >> wej;
        cout << PL("Podaj jednostk・wyj彡iowケ: ");
        cin >> wyj;
        cout << PL("Podaj liczb・");
        cin >> x;

        switch(wej) {
        case 'm': {
            switch(wyj){
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"mg";
                    getch();
                    exit(0);
                    break;
                }
                case 'g': {
                    cout.precision(4);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku): ")<<fixed<<x/1000<<"g";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"g";
                    exit(0);
                    break;
                }
                case 'd': {
                    cout.precision(5);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku) : ")<<fixed<<x/10000<<"dag";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/10000<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(7);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 7miej. po przecinku) : ")<<fixed<<x/1000000<<"kg";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                case 'q': {
                    cout.precision(9);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 9miej. po przecinku): ")<<fixed<<x/100000000<<"q";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000000<<"q";
                    getch();
                    exit(0);
                    break;
                }
                case 't': {
                    cout.precision(10);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 10miej. po przecinku): ")<<fixed<<x/1000000000<<"t";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }


            }
            break;
        }
        case 'g': {
            switch(wyj){
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000<<"mg";
                    getch();
                    exit(0);
                    break;
                }
                case 'g': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"g";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout.precision(3);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/10<<"dag";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/10<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(4);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku) : ")<<fixed<<x/1000<<"kg";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                case 'q': {
                    cout.precision(6);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/100000<<"q";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                case 't': {
                    cout.precision(7);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 7miej. po przecinku): ")<<fixed<<x/1000000<<"t";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }
        case 'd': {
                        switch(wyj){
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10000<<"mg";
                    getch();
                    exit(0);
                    break;
                }
                case 'g': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"g";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu: ")<<x<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(3);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/100<<"kg";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                case 'q': {
                    cout.precision(5);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku): ")<<fixed<<x/10000<<"q";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10000<<"q";
                    getch();
                    exit(0);
                    break;
                }
                case 't': {
                    cout.precision(6);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/100000<<"t";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000<<"t";
                    getch();
                    exit(0);
                    break;
                }
                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }
        case 'k': {
                        switch(wyj){
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000000<<"mg";
                    getch();
                    exit(0);
                    break;
                }
                case 'g': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*1000<<"g";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'q': {
                    cout.precision(4);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku): ")<<fixed<<x/100<<"q";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100<<"q";
                    getch();
                    exit(0);
                    break;
                }
                case 't': {
                    cout.precision(5);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku): ")<<fixed<<x/1000<<"t";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"t";
                    getch();
                    exit(0);
                    break;
                }
                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }

            break;
        }
        case 'q': {
                  switch(wyj){
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100000000<<"mg";
                    getch();
                    exit(0);
                    break;
                }
                case 'g': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100000<<"g";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*10000<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                case 'q': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"q";
                    getch();
                    exit(0);
                    break;
                }
                case 't': {
                    cout.precision(5);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 5miej. po przecinku): ")<<fixed<<x/1000<<"t";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }
        case 't': {
                              switch(wyj){
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000000000<<"mg";
                    getch();
                    exit(0);
                    break;
                }
                case 'g': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*1000000<<"g";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*100000<<"dag";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*1000<<"kg";
                    getch();
                    exit(0);
                    break;
                }
                case 'q': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x*10<<"q";
                    getch();
                    exit(0);
                    break;
                }
                case 't': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x<<"q";
                    getch();
                    exit(0);
                    break;
                }
                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }
        case 'M':{      
        cout << PL("Uwaga! mm=n, cm=c, dm=d, m=m, km=k");
        cout << PL("Podaj jednostk・wej彡iowケ: ");
        cin >> wej;
        cout << PL("Podaj jednostk・wyj彡iowケ: ");
        cin >> wyj;
        cout << PL("Podaj liczb・");
        cin >> x;
        switch(wej) {
        case 'n': {
            switch(wyj){
                case 'n': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"mm";
                    getch();
                    exit(0);
                    break;
                }
                case 'c': {
                    cout.precision(2);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 2miej. po przecinku): ")<<fixed<<x/10<<"cm";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10<<"cm";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout.precision(3);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/100<<"dm";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/100<<"dm";
                    getch();
                    exit(0);
                    break;
                }
                case 'm': {
                    cout.precision(4);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku) : ")<<fixed<<x/1000<<"m";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"m";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(9);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 9miej. po przecinku): ")<<fixed<<x/1000000<<"km";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000000<<"km";
                    getch();
                    exit(0);
                    break;
                }

                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }


            }
            break;
        }
        case 'c': {
                        switch(wyj){
                case 'n': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"mm";
                    getch();
                    exit(0);
                    break;
                }
                case 'c': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"cm";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout.precision(2);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 2miej. po przecinku) : ")<<fixed<<x/10<<"dm";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi : ")<<x/10<<"dm";
                    getch();
                    exit(0);
                    break;
                }
                case 'm': {
                    cout.precision(3);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 3miej. po przecinku) : ")<<fixed<<x/100<<"m";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100<<"m";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(6);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/100000<<"km";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/100000<<"km";
                    getch();
                    exit(0);
                    break;
                }

                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }


            }
        }
        case 'd': {
                                    switch(wyj){
                case 'n': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100<<"mm";
                    getch();
                    exit(0);
                    break;
                }
                case 'c': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"cm";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"dm";
                    getch();
                    exit(0);
                    break;
                }
                case 'm': {
                    cout.precision(2);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 2miej. po przecinku) : ")<<fixed<<x/10<<"m";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10<<"m";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(6);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 6miej. po przecinku): ")<<fixed<<x/10000<<"km";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/10000<<"km";
                    getch();
                    exit(0);
                    break;
                }

                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }
        case 'm': {
                        switch(wyj){
                case 'n': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000<<"mm";
                    getch();
                    exit(0);
                    break;
                }
                case 'c': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100<<"cm";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10<<"dm";
                    getch();
                    exit(0);
                    break;
                }
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"m";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout.precision(4);
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi (wy忤ietlanie tylko 4miej. po przecinku): ")<<fixed<<x/1000<<"km";
                    cout <<endl<< PL("Twoja liczba po przeliczeniu z peウnケ precyzjケ wynosi: ")<<x/1000<<"km";
                    getch();
                    exit(0);
                    break;
                }

                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }
        case 'k': {
                        switch(wyj){
                case 'n': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000000<<"mm";
                    getch();
                    exit(0);
                    break;
                }
                case 'c': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*100000<<"cm";
                    getch();
                    exit(0);
                    break;
                }
                case 'd': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*10000<<"dm";
                    getch();
                    exit(0);
                    break;
                }
                case 'm': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x*1000<<"m";
                    getch();
                    exit(0);
                    break;
                }
                case 'k': {
                    cout <<endl<< PL("Twoja liczba po przeliczeniu wynosi: ")<<x<<"km";
                    getch();
                    exit(0);
                    break;
                }

                default: {
                    cout <<endl<< PL("Nie prawidウowy argument wyj彡iowy, spruj ponownie");
                    getch();
                    exit(0);
                    break;
                }

            break;
        }

        break;
    }
    default:{
        cout << PL ("Nie prawidウowy argument! Spruj ponownie!");
        break;
    }
}
            break;
        }

    return 0;
    }
}

    }


}
}
}
}
}
}
}
}

Some more details, some more details, some more details, some more details, Some more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more detailsSome more details, some more details, some more details, some more details...

Aucun commentaire:

Enregistrer un commentaire