Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

error: jump to case label; error: crosses initialization of `int wybor2';

Ostatnio zmodyfikowano 2008-10-14 23:47
Autor Wiadomość
kuzdo
Temat założony przez niniejszego użytkownika
error: jump to case label; error: crosses initialization of `int wybor2';
» 2008-10-14 23:04:26
Witam. Mam problem i nie wiem o co chodzi.
Oto kod programu:
C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
#include "console.ddt"
using namespace ddt::console;
using namespace std;
int main()
{
    int wybor = 10;
    while( wybor != 0 )
    {
        clrscr(); ///////////////////////////////////////////////////////////  MENU
        cout << "Witam w Kalkulatorze ver. 0.1" << endl;
        cout << "Menu: [1] Dodawanie.   [2] Odejmowanie." << endl;
        cout << "      [3] Mnożenie.    [4] Dzielenie." << endl;
        cout << "      [5] Potegowanie. [6] Pierwiastkowanie." << endl;
        cout << "      [7] Wiecej..." << endl;
        cout << "      [0] Koniec.      [9] Autor." << endl;
        cin >> wybor;
        switch( wybor )
        {
        case 9:
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [9] Autor." << endl << endl;
            cout << "Imie i Nazwisko: Przemyslaw 'Kuzdo' K." << endl;
            cout << "WWW: www.kuzdo.net" << endl;
            break;
        case 1: ////////////////////////////////////////////////////////DODAWANIE
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [1] Dodawanie." << endl;
            int liczba11, liczba12;
            cout << endl << "Prosze podac pierwsza liczbe:" << endl;
            cin >> liczba11;
            cout << "Prosze podac druga liczbe:" << endl;
            cin >> liczba12;
            cout << "Wynik to:" << liczba11 + liczba12 << endl;
            break;
        case 2: ///////////////////////////////////////////////////////ODEJMOWANIE
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [2] Odejmowanie." << endl;
            int liczba21, liczba22;
            cout << endl << "Prosze podac pierwsza liczbe:" << endl;
            cin >> liczba21;
            cout << "Prosze podac druga liczbe:" << endl;
            cin >> liczba22;
            cout << "Wynik to:" << liczba21 - liczba22 << endl;
            break;
        case 3: /////////////////////////////////////////////////////////MNOZENIE
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [3] Mnozenie." << endl;
            int liczba31, liczba32;
            cout << endl << "Prosze podac pierwsza liczbe:" << endl;
            cin >> liczba31;
            cout << "Prosze podac druga liczbe:" << endl;
            cin >> liczba32;
            cout << "Wynik to:" << liczba31 * liczba32 << endl;
            break;
        case 4: ////////////////////////////////////////////////////////DIELENIE
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [4] Dzielenie." << endl;
            int liczba41, liczba42;
            cout << endl << "Prosze podac pierwsza liczbe:" << endl;
            cin >> liczba41;
            cout << "Prosze podac druga liczbe:" << endl;
            cin >> liczba42;
            cout << "Wynik to:" << liczba41 / liczba42 << endl;
            break;
        case 5: //////////////////////////////////////////////////////POTEGOWANIE
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [5] Potegowanie." << endl;
            int liczba5, potega5;
            cout << endl << "Prosze podac  liczbe:" << endl;
            cin >> liczba5;
            cout << "Prosze podac potege:" << endl;
            cin >> potega5;
            cout << "Wynik to:" << pow( liczba5, potega5 ) << endl;
            break;
        case 6: /////////////////////////////////////////////////PIERWIASTKOWANIE
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [6] Pierwiastkowanie." << endl;
            int liczba6, pierwiastek6;
            cout << endl << "Prosze podac liczbe:" << endl;
            cin >> liczba6;
            cout << "Prosze podac pierwiastek (z zakonczeniem '.0' np. '2.0'):" << endl;
            cin >> pierwiastek6;
            cout << "Wynik to:" << pow( liczba6,( 1 / pierwiastek6 ) ) << endl;
            break;
        case 7: ////////////////////////////////////////////////////////WIECEJ
            clrscr();
            int wybor2 = 10;
            cout << "Witam w Kalkulatorze ver. 0.1" << endl;
            cout << "      [7] Wiecej." << endl << endl;
            cout << "Menu: [1] Stopnie na radiany." << endl;
            cout << "      [2] Radiany na stopnie." << endl;
            cout << "      [3] Sinus." << endl;
            cout << "      [4] Cosinus." << endl;
            cout << "      [5] Tangens." << endl;
            cout << "      [6] Logarytm naturalny." << endl;
            cout << "      [7] Logarytm - podstawa 10." << endl;
            cout << "      [8] Wroc do menu." << endl;
            cin >> wybor2;
            switch( wybor2 )
            {
            case 1:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.1] Stopnie na radiany." << endl;
                double stopnie71;
                cout << endl << "Prosze podac kat w stopniach:" << endl;
                cin >> stopnie71;
                cout << stopnie71 << " stopnie = " <<( stopnie71 * M_PI ) / 180.0f << " radiany" << endl;
                break;
            case 2:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.2] Radiany na stopnie." << endl;
                double rad72;
                cout << endl << "Prosze podac kat w radianach:" << endl;
                cin >> rad72;
                cout << rad72 << " radiany = " <<( rad72 * 180 ) / M_PI << " stopnie" << endl;
                break;
            case 3:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.3] Sinus." << endl;
                double kat73;
                cout << endl << "Prosze podac kat w radianach:" << endl;
                cin >> kat73;
                cout << "Sinus kata " << kat73 << " wynosi " << sin( kat73 ) << endl;
                break;
            case 4:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.4] Cosinus." << endl;
                double kat74;
                cout << endl << "Prosze podac kat w radianach:" << endl;
                cin >> kat74;
                cout << "Cosinus kata " << kat74 << " wynosi " << cos( kat74 ) << endl;
                break;
            case 5:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.5] Tangens." << endl;
                double kat75;
                cout << endl << "Prosze podac kat w radianach:" << endl;
                cin >> kat75;
                cout << "Tangens kata " << kat75 << " wynosi " << tan( kat75 ) << endl;
                break;
            case 6:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.6] Logarytm naturalny." << endl;
                double liczba76;
                cout << endl << "Prosze podac liczbe:" << endl;
                cin >> liczba76;
                cout << "Logarytm liczby " << liczba76 << " wynosi " << log( liczba76 ) << endl;
                break;
            case 7:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "      [7.7] Logarytm - podstawa 10." << endl;
                double liczba77;
                cout << endl << "Prosze podac liczbe:" << endl;
                cin >> liczba77;
                cout << "Logarytm o podstawie 10 liczby " << liczba77 << " wynosi " << log10( liczba77 ) << endl;
                break;
            case 8:
                clrscr();
                break;
                default:
                clrscr();
                cout << "Witam w Kalkulatorze ver. 0.1" << endl;
                cout << "ERROR: Nie ma takiej funkcji! Wracam do menu." << endl;
                break;
            }
        case 0:
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl << endl;
            cout << "Dziękuję za skorzystanie z mojego kalkulatora." << endl;
            break;
            default:
            clrscr();
            cout << "Witam w Kalkulatorze ver. 0.1" << endl << endl;
            cout << "ERROR: Nie ma takiej funkcji! Wracam do menu." << endl;
            break;
        }
        getch();
        return( 0 );
    }
A oto log kompilacji:
Kompilator: Default compiler
Wykonywanie  g++.exe...
g++.exe "D:\C++\calc.cpp" -o "D:\C++\calc.exe"   -g3  -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include"  -I"C:\Dev-Cpp\include\c++\3.4.2\backward"  -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32"  -I"C:\Dev-Cpp\include\c++\3.4.2"  -I"C:\Dev-Cpp\include"   -L"C:\Dev-Cpp\lib" -g3
D:\C++\calc.cpp: In function `int main()':
D:\C++\calc.cpp:183: error: jump to case label
D:\C++\calc.cpp:97: error:   crosses initialization of `int wybor2'
D:\C++\calc.cpp:188: error: jump to case label
D:\C++\calc.cpp:97: error:   crosses initialization of `int wybor2'
D:\C++\calc.cpp:196: error: expected `}' at end of input
Wykonanie zakończone
Z góry dziękuję za pomoc w ustaleniu problemu.

//edit: Mógłby ktoś też napisać, czy kod jest dobry, czy może za dużo tego wszystkiego i można byłoby to łatwiej i szybciej zapisać.
P-2046
DejaVu
» 2008-10-14 23:07:26
10 min temu podobny był problem rozwiązany:
C/C++
switch(...)
{
    case...:
    { //klamry ważne!
        //tu wklej kod
    }
    break;
    case...:
    { //klamry ważne!
        //tu wklej kod
    }
    break;
}
Dopisanie klamr jest potrzebne w case wtedy, gdy deklarujesz zmienne wewnątrz case'a.
P-2047
kuzdo
Temat założony przez niniejszego użytkownika
» 2008-10-14 23:09:31
A to w takim razie przepraszam, ale nie wiedziałem o tych klamrach bo:

"VIII. Warunek wielokrotnego wyboru switch ... case"

W przykładach case jest bez klamer.
P-2048
DejaVu
» 2008-10-14 23:11:53
[WWW-TODO]: Rozbudować lekcję kursu switch ... case o informacje zawarte w tym temacie.
P-2049
kuzdo
Temat założony przez niniejszego użytkownika
» 2008-10-14 23:47:51
Problem rozwiązany.

Temat o Kalkulatorze: http://forum.ddt.pl/?Tid=357

Zamykam.
P-2051
« 1 »
  Strona 1 z 1