problem goto lub case (ewentualna prosba o poprawe kodu)

0

Witam! Mam problem ze swoim programem, mianowicie: kiedys zrobilem sobie taki prosty plan lekcji, teraz postanowilem go przerobic na plan zajec, nie wprowadzalem powaznych zmian w kodzie, jednak Dev-C++ nie chce mi go skompilowac. Na poczatku byl problem z biblioteka ddtconsole.h, ale z tym sie juz uporalem, pobralem ja po prostu z sieci. Teraz blad pojawia mi sie przy "case" a jak cos zmienie to przy "goto" i tutaj takie dodatkowe pytanie na co moge zamienic "goto"? Bo zdaje sobie sprawe ze jest prostackie:D

Dodatkowe info: ten pierwszy robilem na starym kompie na xp, teraz robie na netboku z 7, jesli ma to jakies znaczenie. Probowalem tez kompilowac ten pierwszy program(plan lekcji) to sa jakies bledy, pomimo ze on dziala(bo byl robiony i kompilowany najpierw na starym kompie). Uzywam od zawsze Dev-C++.

Ponizej wklejam kod:

 #include <iostream>
#include <cstdio>
#include <conio.h>
#include "ddtconsole.h"

using namespace ddt::console;
using namespace std;
 
int main () 
{  
//deklaracje zmiennych
  panel_glowny: //glowny panel
    char wybor_char2, znak;
    int kolorTekstu=14;//min wartosc=0; max wartosc=15;
    ddt::console::textattr(kolorTekstu);
    int wybor; 
    cout <<"______________________________________________________________"<<endl;
    cout <<"\n\t\t\t***PLAN ZAJEC***" <<endl<<endl;
    cout <<"Po wybraniu dnia tygodnia i wpisaniu godziny, program \nprzedstawi Ci " 
    <<"informacje dotyczaca zajec jakie teraz masz.\nWybierz dzien " 
    <<"poprzez wpisanie numeru (1,2,3,4,5) oraz nacisnij ENTER" <<endl <<endl;
    cout <<"______________________________________________________________"<<endl;
    cout << "\n\tDni tygodnia:" <<endl <<endl;
    cout << "\[1] Poniedzialek" <<endl;
    cout << "\[2] Wtorek" <<endl;
    cout << "\[3] Sroda" <<endl;
    cout << "\[4] Czwartek" <<endl;
    cout << "\[5] Piatek" <<endl;
    cout << "\[6] Wyjscie z programu" <<endl; 
    cin >> wybor; 
    system("cls"); // czyszczenie konsoli
    
    switch(wybor) 
      {
      case 1: // [1] poniedzialek.
          {
    kolorTekstu=14;  // kolor tekstu 
    ddt::console::textattr(kolorTekstu);
    cout <<"___________________________________"<<endl;
cout<<"\nGodzine wpisz w nastepujacy sposob:"<<endl 
<<"Godzina (np 14), oddzielona ';' lub ':', nastepnie minuta (np 44), na koncu nacisnij ENTER"<<endl<<endl;        
cout <<"___________________________________"<<endl;
int czas;
  {
  cout<<"\nPodaj godzine ";
 int h,m;
  char buffor;
do
{
  std::cin>>h>>buffor>>m;
  // podajesz np. 12:42

  std::cout<<h<<" "<<m;
  if(h>24 || m>60)
  {
  system("cls");
  cout<<"\n\nNie ma takiej godziny! Podaj jeszcze raz:"<<endl<<endl;
  }  
}
while(h>24 || m>60);
czas = h*60+m;
};
  
    kolorTekstu=10;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout << "\n___________________________________"<<endl;
    if (czas<480) 
cout<<"Nie masz jeszcze zajec, zaczna sie za " <<480-czas <<" minut/y. \nPodstawy Geodezji \nSala: 111 (ul.Balicka)"; //420 - 7h*60min
    if (czas>=480 && czas<570) 
cout<<"\n Podstawy Geodezji \nSala: 111 (ul.Balicka)\nZajecia skoncza sie za " <<570-czas<<" minut/y.";
    if (czas>=570 && czas<585) 
cout<<"\n Przerwa (15min) \n Nastepne: Matematyka \nSala: 202 (ul. Balicka) \nZajecia zaczna sie za " <<585-czas<< " minut/y.";
    if (czas>=585 && czas<675) 
cout<<"\n Matematyka \nSala: 202 (ul. Balicka) \n Zajecia skoncza sie za " <<675-czas<<" minut/y.";
    if (czas>=675 && czas<855) 
cout<<"\n Przerwa (3h)\nNastepne: Hydrogeologia \nSala: 003 (al. Mickiewicza)\nZajecia zaczna sie za " <<855-czas<< " minut/y.";
    if (czas>=855 && czas<945) 
cout<<"\n Hydrogeologia \nSala: 003 (al. Mickiewicza) \nZajecia skoncza sie za " <<945-czas<<" minut/y.";
    if (czas>=945 && czas<960) 
cout<<"\n Przerwa (15min) \nNastepne: Meterologia i Klimatologia \nSala: 541 (al. Mickiewicza)\n zajecia zaczna sie za " <<960-czas<< " minut/y.";
    if (czas>=960 && czas<1050) 
cout<<"\n Meterologia i Klimatologia \nSala: 541 (a;. Mickiewicza) \nZajecia skoncza sie za " <<1050-czas<<" minut/y.";
    if (czas>=1050 && czas<1065) 
cout<<"\n Przerwa (15min) \nNastepne: Rysunek Techniczny \nSala: 245 (al. Mickiewicza) \nZajecia zaczna sie za " <<1065-czas<< " minut/y.";
    if (czas>=1065 && czas<1155) 
cout<<"\n Rysunek Techniczny \nSala: 245 (al. Mickiewicza) \nZajecia skoncza sie za " <<1155-czas<<" minut/y.";
    if (czas>1155) 
cout<<"\n Nie masz juz dzisiaj zajec!\n Jutro zaczynasz o 9:30.";
       
     do
     {
      cout << "\n\n[c] - Powrot do wyboru dnia." <<  endl;
      cout << "[k] - Zakonczenie programu." << endl;
      cout << "___________________________________";
      kolorTekstu=11;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
      cout << "\n\n\t\t\t**by beN**"<<endl; 
      cin >> wybor_char2;
      system("cls");
   
      if(wybor_char2 == 'c')
      {
        goto panel_glowny;
      }

      if(wybor_char2 == 'k')
      {
        goto koniec;
      }
      if(wybor_char2 != 'k' || 'c')

        cout << "Mialo byc \[c] lub \[k]!" << endl;
    }while(wybor_char2 != 'k' || 'c');
        }//zakonczenie case           
      //  drugi dzien, wtorek!
       
       case 2: 
           {
    kolorTekstu=14;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout <<"___________________________________"<<endl;
cout<<"\nGodzine wpisz w nastepujacy sposob:"<<endl 
<<"Godzina (np 14), oddzielona ';' lub ':', nastepnie minuta (np 44), na koncu nacisnij ENTER"<<endl<<endl;    
cout <<"___________________________________"<<endl;
  int czas;
  {
  cout<<"\nPodaj godzine ";
 int h,m;
  char buffor;
do
{
  std::cin>>h>>buffor>>m;
  // podajesz np. 12:42

  std::cout<<h<<" "<<m;
  if(h>24 || m>60)
  {
  system("cls");
  cout<<"\n\nNie ma takiej godziny! Podaj jeszcze raz:"<<endl<<endl;
  }  
}
while(h>24 || m>60);
czas = h*60+m;
};
    
    kolorTekstu=10;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout << "\n___________________________________"<<endl;
    if (czas<570) 
cout<<"Nie masz jeszcze zajec, zaczna sie za " <<570-czas <<" minut/y. \nj. Angielski \nSala: VIII (ul. sw. Marka)"; //420 - 7h*60min, 
    if (czas>=570 && czas<660) 
cout<<"\n j. Angielski \nSala: VIII (ul. sw. Marka) \nZajecia skoncza sie za " <<660-czas<<" minut/y."; //5 lekcja
    if (czas>=660 && czas<840) 
cout<<"\n Przerwa (3h) \nNastepne: Technologia Informacyjna \nSala: 532a (al. Mickiewicza) \nZajecia zacznna sie za " <<840-czas<< " minut/y.";
    if (czas>=840 && czas<930) 
cout<<"\n Technologia Informacyjna \nSala: 532a (al. Mickiewicza) \nZajecia skoncza sie za " <<930-czas<<" minut/y."; //6 lekcja
    if (czas>=930 && czas<945) 
cout<<"\n Przerwa (15min) \nNastepne: Podstawy Nauk o Ziemii \nSala: 515 (al. Mickiewicza) \nZajecia zaczna sie za " <<945-czas<< " minut/y.";
    if (czas>=945 && czas<1035) 
cout<<"\n Podstawy Nauk o Ziemii \nSala: 515 (al. Mickiewicza) \nZajecia skoncza sie za " <<1035-czas<<" minut/y."; // 7 lekcja
    if (czas>1035) 
cout<<"\n Nie masz juz dzisiaj zajec!\n Jutro zaczynasz o 8:30.";

      do
     {
      cout << "\n\n[c] - Powrot do wyobru dnia." <<  endl;
      cout << "[k] - Zakonczenie programu." << endl;
      cout << "___________________________________";
      kolorTekstu=11;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
      cout << "\n\n\t\t\t**by beN**"<<endl; 
      cin >> wybor_char2;
      system("cls");
   
      if(wybor_char2 == 'c')
      {
        goto panel_glowny;
      }

      if(wybor_char2 == 'k')
      {
        goto koniec;
      }
      if(wybor_char2 != 'k' || 'c')

        cout << "Mialo byc \[c] lub \[k]!" << endl;
    }while(wybor_char2 != 'k' || 'c');
        }//zakonczenie case
    
     // !!!trzeci dzien!!!
     
      case 3:
          {
    kolorTekstu=14;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout <<"___________________________________"<<endl;
cout<<"\nGodzine wpisz w nastepujacy sposob:"<<endl 
<<"Godzina (np 14), oddzielona ';' lub ':', nastepnie minuta (np 44), na koncu nacisnij ENTER"<<endl<<endl;    
cout <<"___________________________________"<<endl;
int czas;
  {
  cout<<"\nPodaj godzine ";
 int h,m;
  char buffor;
do
{
  std::cin>>h>>buffor>>m;
  // podajesz np. 12:42

  std::cout<<h<<" "<<m;
  if(h>24 || m>60)
  {
  system("cls");
  cout<<"\n\nNie ma takiej  godziny! Podaj jeszcze raz:"<<endl<<endl;
  }  
}
while(h>24 || m>60);
czas = h*60+m;
};
    
    kolorTekstu=10;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout << "\n___________________________________"<<endl;
    if (czas<510) 
cout<<"Nie masz jeszcze zajec, zaczna sie za " <<510-czas <<" minut/y. \nMatematyka (al. Mickiewicza) \nSala: 120";
    if (czas>=510 && czas<600) 
cout<<"\n Matematyka (al. Mickiewicza) \nSala: 120 \nZajecia skoncza sie za " <<600-czas<<" minut/y.";
    if (czas>=600 && czas<615) 
cout<<"\n Przerwa (15min) \nNastepne: Podstawy Prawa (al. Mickiewicza) \nSala: 120 \nZajecia zaczna sie za " <<615-czas<< " minut/y.";
    if (czas>=615 && czas<705) 
cout<<"\n Podstawy Prawa (al. Mickiewicza) \nSala: 120(al. Mickiewicza) \nZajecia skoncza sie za " <<705-czas<<" minut/y.";
    if (czas>=705 && czas<720) 
cout<<"\n Przerwa (15min) \nNastepne: Podstawy Nauk o Ziemii/Meterologia i Klimatologia \nSala: 120 (al. Mickiewicza) \nZajecia zaczna sie za " <<720-czas<< " minut/y.";
    if (czas>=720 && czas<810) 
cout<<"\n Podstawy Nauk o Ziemii/Meterologia i Klimatologia \nSala: 120 (al. Mickiewicza) \nZajecia skoncza sie za " <<810-czas<<" minut/y.";
    if (czas>=810 && czas<1005) 
cout<<"\n Przerwa (3h, 15min) \nNastepne: Podstawy Geodezji/Hydrogeologia \nSala: 120 (al. Mickiewicza) \nZajecia zaczna sie za " <<1005-czas<< " minut/y.";
    if (czas>=1005 && czas<1095) 
cout<<"\n Podstawy Geodezji/Hydrogeologia \nSala: 120 (al. Mickiewicza) \nZajecia skoncza sie za " <<1095-czas<<" minut/y.";
    if (czas>=1095 && czas<1140) 
cout<<"\n Przerwa (45min) \nNastepne: WF \nSala: silownia (al. 29 Listopada) \nZajecia zaczna sie za " <<1140-czas<< " minut/y.";
    if (czas>=1140 && czas<1230) 
cout<<"\n WF \nSala: silownia (al. 29 Listopada) \nZajecia skoncza sie za " <<1230-czas<<" minut/y.";
    if (czas>1230) 
cout<<"\n Nie masz juz dzisiaj zajec!\n Jutro zaczynasz o 8:30.";

  
     do
     {
      cout << "\n\n[c] - Powrot do wyboru dnia." <<  endl;
      cout << "[k] - Zakonczenie programu." << endl;
      cout << "___________________________________";
      kolorTekstu=11;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
      cout << "\n\n\t\t\t**by beN**"<<endl;
      cin >> wybor_char2;
      system("cls");
   
      if(wybor_char2 == 'c')
      {
        goto panel_glowny;
      }

      if(wybor_char2 == 'k')
      {
        goto koniec;
      }
      if(wybor_char2 != 'k' || 'c')

        cout << "Mialo byc \[c] lub \[k]!" << endl;
    }while(wybor_char2 != 'k' || 'c');
        }//zakonczenie case
           //czwartek!!
           
     case 4:
         {
    kolorTekstu=14;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
     cout <<"___________________________________"<<endl;
cout<<"\nGodzine wpisz w nastepujacy sposob:"<<endl 
<<"Godzina (np 14), oddzielona ';' lub ':', nastepnie minuta (np 44), na koncu nacisnij ENTER"<<endl<<endl;    
cout <<"___________________________________"<<endl;
   int czas;
   {
  cout<<"\nPodaj godzine ";
 int h,m;
  char buffor;
do
{
  std::cin>>h>>buffor>>m;
  // podajesz np. 12:42

  std::cout<<h<<" "<<m;
  if(h>24 || m>60)
  {
  system("cls");
  cout<<"\n\nNie ma takiej  godziny! Podaj jeszcze raz:"<<endl<<endl;
  }  
}
while(h>24 || m>60);
czas = h*60+m;
};
    
    kolorTekstu=10;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout << "\n___________________________________"<<endl;
    if (czas<1070) 
cout<<"Dzisiaj masz WOLNE od zajec! \nDo proby KGF Lajkonik pozostalo " <<1070-czas <<" minut/y."; //420 - 7h*60min
    if (czas>=1070 && czas<1190) 
cout<<"\n Proba KGF Lajkonik \nSkonczy sie za " <<1190-czas<<" minut/y.";
    if (czas>1190) 
cout<<"\nJestes po probie, masz wolny wieczor! :)";

do
     {
      cout << "\n\n[c] - Powrot do wyboru dnia." <<  endl;
      cout << "[k] - Zakonczenie programu." << endl;
     cout << "___________________________________";
     kolorTekstu=11;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
      cout << "\n\n\t\t\t**by beN**"<<endl;
      cin >> wybor_char2;
      system("cls");
   
      if(wybor_char2 == 'c')
      {
        goto panel_glowny;
      }

      if(wybor_char2 == 'k')
      {
        goto koniec;
      }
      if(wybor_char2 != 'k' || 'c')

        cout << "Mialo byc \[c] lub \[k]!" << endl;
    }while(wybor_char2 != 'k' || 'c');
        }//zakonczenie case
     
     //piatek!!*******
      case 5:
          {
    kolorTekstu=14;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
    cout <<"___________________________________"<<endl<<endl;
    cout <<"Dzisiaj masz WOLNE!!"<<endl<<endl;
    cout <<"___________________________________"<<endl<<endl;
    cout << "\n\n[c] - Powrot do wyboru dnia." <<endl;
     cout << "[k] - Zakonczenie programu." <<endl<<endl;
     cout << "___________________________________";
      
      kolorTekstu=11;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
      cout << "\n\n\t\t\t**by beN**"<<endl; 
      cin >> wybor_char2;
      system("cls");
   
      if(wybor_char2 == 'c')
      {
        goto panel_glowny;
      }

      if(wybor_char2 == 'k')
      {
        goto koniec;
      }
      if(wybor_char2 != 'k' || 'c')

        cout << "Mialo byc \[c] lub \[k]!" << endl;
    }while(wybor_char2 != 'k' || 'c');
        }//zakonczenie case

case 6:
     {
       goto koniec;
       }               
   
        
std::cin.sync();
std::cin.get();    
}
  koniec: //jesli wybrano 'k' 
 kolorTekstu=7;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
     cout << "________________________________________________________________";
  cout << "\n\n\nDziekuje za wyprobowanie mojego programu, zapraszam ponownie!!!" << endl
  <<"Aby wyjsc nacisnij dowolny klawisz." <<endl<<endl;
 cout<<"\t\t\t\t\tautor: Zbych Zdzich"<<endl<<endl; 
     cout << "________________________________________________________________"<<endl;
 kolorTekstu=11;  // kolor tekstu;]  
    ddt::console::textattr(kolorTekstu);
 cout<<"\n\t\t\t\t\t "<<char(201)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)
 <<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)
 <<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(187);
 cout<<"\n\t\t\t\t\t "<<char(186)<<"All rights reserved"<<char(186); 
 cout<<"\n\t\t\t\t\t "<<char(200)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)
 <<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)
 <<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(205)<<char(188);
getch();
return 0;
}

2

To co tu napisałeś to jest jakiś koszmar. Moja rada? Skasuj to i napisz od nowa, jak normalny człowiek. Podziel to na funkcje przynajmniej. Naucz się korzystać z pętli.

0

Moze trafilem do zlego dzialu, jesli tak to przeniose temat. Dopiero sie ucze, to jest moj pierwszy program, wiec jak bym umial napisac go "jak normalny czlowiek" to wlasnie bym tak uczynil i nie wchodzil na forum..

1
benRNZ napisał(a)

Moze trafilem do zlego dzialu, jesli tak to przeniose temat. Dopiero sie ucze, to jest moj pierwszy program

http://pl.wikipedia.org/wiki/Newbie wejdź i przeczytaj ;) Potem poszukaj na forum (zacznij od góry będzie szybciej).

1

@autor,

kiedys zrobilem sobie taki prosty plan lekcji,

Dopiero sie ucze, to jest moj pierwszy program

Dostrzegasz pewną sprzeczność?

0

Proponuję lekturę (na google na pewno się znajdzie :)) jakichś materiałów o pętlach: while, do...while, for, a także na temat instrukcji warunkowych switch oraz if...else. No i znajdź sobie, dlaczego zwykle nie używamy goto w c++ (choć są wyjątki). No i naucz się formatować kod.

0
bogdans napisał(a)

@autor,

kiedys zrobilem sobie taki prosty plan lekcji,

Dopiero sie ucze, to jest moj pierwszy program

Dostrzegasz pewną sprzeczność?

Nie dostrzegam, poniewaz robiac go kiedys nie wykluczam opcji ze moja nauka przeciagnela sie w czasie, a spowodowane bylo to wymuszona przerwa; a obecnie edytujac dane nie tworze nowego, tylko go jakby "udoskonalam"*, wiec nadal jest moim pierwszym "programem".

    • chcial bym to tak nazwac

Dziekuje wszystkim za pomoc:) Jesli mam takie mozliwosci to przeniose temat do 'Newbie'.

1 użytkowników online, w tym zalogowanych: 0, gości: 1