Witam. Uczę się programować od 2 tygodni i stwierdziłem, że skoro mam teraz dużo wolnego mogę spróbować napisać większy program. Niestety stanąłem w martwym punkcie. Kiedy chce napisać drugiego case wyskakuje mi błąd 109 [Error] jump to case label [-fpermissive] szukałem na internecie, ale nie pomogło. Prosiłbym o pomoc i wytłumaczenie co robię źle. Chętnie przyjmę też słowa krytyki dot. mojego programu typu co jest słabe co można było napisać mądrzej i td. Prosiłbym o pomoc :) miłego dnia!
#include <iostream>
#include <windows.h>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;
char *tr(char *str)
{
static char buff[256];
char cp[]="\245\206\251\210\344\242\230\276\253\244\217\250\235\343\340\227\275\215ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
if(strlen(str)>=sizeof(buff)) return str;
char *bf=buff;
while(*str)
{
char *pos=strchr(cp+18,*str);
*(bf++)=pos?*(pos-18):*str;
++str;
}
*bf=0;
return buff;
}
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
void end(){
system("cls");
cout<<endl<<endl;
cout<<"\t\t\t\t";
SetConsoleTextAttribute(hConsole, FOREGROUND_RED | BACKGROUND_BLUE); //zmiana koloru tła na czerwony i koloru czcionki na niebieski
cout<<"TRWA WYCHODZENIE..."<<endl<<endl;
Sleep(500);
SetConsoleTextAttribute(hConsole, 7); //zmiana koloru czcionki na biały
exit(0);
}
int main(){
for(;;){
system("cls");
int wybor2=0;
cout<<"==========================";
cout<<endl<<tr("\tMENU GŁÓWNE");
cout<<endl<<"==========================";
cout<<endl<<tr(" 1. Terminologia");
cout<<endl<<tr(" 2. Funkcja");
cout<<endl<<tr(" 3. NIEDOSTEPNE");
cout<<endl<<tr(" 4. NIEDOSTEPNE");
cout<<endl<<endl<<tr("Wyjdź z programu: ");
cout<<endl<<endl<<tr("Wybór: ");
cin>>wybor2;
switch(wybor2){
case 1:
int wybor1;
fstream plik;
plik.open("terminy.txt",ios::in);
if(plik.good()==false){cout<<tr("Nie mozna otworzyc pliku"); exit(0);}
string terminy[100], wyjasnienie[100];
string linia;
int nr_linii=1,nr_ter=1;
while(getline(plik,linia)){
switch(nr_linii){
case 1: terminy[nr_ter]=linia; break;
case 2: wyjasnienie[nr_ter]=linia; break;
}
if(nr_linii==2){nr_ter++;nr_linii=0;}
nr_linii++;
}
plik.close();
do{
int wybor=1,licznik,powrot;
powrot=0;
system("cls");
cout<<tr("Terminy")<<endl<<endl;
for(int i=1;i<nr_ter;i++){
licznik=0;
cout<<i<<". "<<tr(strdup(terminy[i].c_str()))<<'\n'; //wypisuje wszystkie terminy
licznik=i;}
powrot=licznik+1;
cout<<endl<<powrot<<". "<<tr("Powrót do menu głównego");
cout<<endl<<endl<<tr("Wybór: ");
cin>>wybor;
if(wybor==powrot){ //konczy case i wraca do menu głównego
break;
}
system("cls");
SetConsoleTextAttribute(hConsole, 10); //zmiana koloru czcionki hhhna zielony
cout<<tr(strdup(terminy[wybor].c_str()));
SetConsoleTextAttribute(hConsole, 7); //zmiana koloru czcionki na biały
cout<<" - ";
SetConsoleTextAttribute(hConsole, 11); //zmiana koloru czcionki na jasno niebieski
cout<<tr(strdup(wyjasnienie[wybor].c_str()));
SetConsoleTextAttribute(hConsole, 7); //zmiana koloru czcionki na biały
cout<<endl<<endl<<endl<<"1. Cofnij";
cout<<endl<<tr("2. Wyjdź");
cout<<endl<<tr("Wybór: ");
cin>>wybor1;
while(wybor1!=1&&wybor1!=2){ //Sprawdza czy użytkownik wpisał poprawna liczbe 1 lub 2
cout<<tr("Źle wpisane polecenie. Spróbuj ponownie:");
cin>>wybor1;
}
if(wybor1==2){end();}
}while(wybor1==1);
case 2: break;
} //konczy switch
} //konczy for
}