Instrukcje warunkowe if,else oraz instrukcja wyboru switch

monika2109
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 10 mar 2010, o 17:26
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 2 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: monika2109 »

Zad.
Wykorzystując instrukcję wyboru switch napisz program komputerowy wypisujący czynności które masz do wykonania od podanej przez użytkownika godziny (godzina podana w postaci liczby unsigned short in).Przypuśćmy że plan dnia masz następujący:
godz.7-,,Pobudka,mycie i sniadanie"
godz.8-14-,,Nauka w szkole"
godz. 15-,,Obiad"
godz.16-17-,,Odrobienie pracy domowej"
godz.18-20-,,Czas wolny"
godz.21-6-,,Spokojny sen"
Na przykład jak ktoś poda godzinę 12 to komputer powinien wypisać:
12-Nauka w szkole
13-Nauka w szkole
14-Nauka w szkole
15-Obiad
16-Odrobienie pracy domowej
17-Odrobienie pracy domowej
18-Czas wolny
19-Czas wolny
20-Czas wolny
21-6-Spokojny sen


zrobiłam tak ale to jest źle :/nie wiem jak to zrobić :/

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{cout<<"Podaj godzine:";
unsigned short int g;
cin>>g;
switch(g)
{case7:cout<<"Pobudka,mycie i sniadanie
";
case8:cout<<"Nauka w szkole
";
case9:cout<<"Nauka w szkole
";
case10:cout<<"Nauka w szkole
";
case11:cout<<"Nauka w szkole
";
case12:cout<<"Nauka w szkole
";
case13:cout<<"Nauka w szkole
";
case14:cout<<"Nauka w szkole
";
case15:cout<<"Obiad
";
case16:cout<<"Odrabianie lekcji
";
case17:cout<<"Odrabianie lekcji
";
case18:cout<<"Czas wolny
";
case19:cout<<"Czas wolny
";
case20:cout<<"Czas wolny
";
case21:cout<<"Spokojny sen
";
default:cout<<"Spokojny sen
";
system("PAUSE");
return EXIT_SUCCESS;
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: Crizz »

Po pierwsze po case musi być spacja. Po drugie brakuje nawiasów zamykających dla instrukcji case i dla funkcji main.
soku11
Użytkownik
Użytkownik
Posty: 6607
Rejestracja: 16 sty 2007, o 19:42
Płeć: Mężczyzna
Podziękował: 119 razy
Pomógł: 1823 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: soku11 »

Po trzecie w każdym case musi być instrukcja break, żeby nie wykonywać kolejnych przypadków.
Ogólnie można to zrobić bardziej sprytnie:

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
using namespace std;


int main()
{
  unsigned short int g=0;

  cout<<"Podaj godzine:";
  cin>>g;

  switch(g)
  {
    case 7:
      cout<<"Pobudka,mycie i sniadanie
";
      break;
    case 8: case 9: case 10:
    case 11: case 12: case 13:
    case 14:
      cout<<"Nauka w szkole
";
      break;
    case 15:
      cout<<"Obiad
";
      break;
    case 16: case 17:
      cout<<"Odrabianie lekcji
";
      break;
    case 18: case 19: case 20:
      cout<<"Czas wolny
";
      break;
    default:
      cout<<"Spokojny sen
";
      break;
  }

  return EXIT_SUCCESS;
}


Pozdrawiam.
Awatar użytkownika
Sokół
Użytkownik
Użytkownik
Posty: 451
Rejestracja: 17 wrz 2006, o 19:22
Płeć: Mężczyzna
Lokalizacja: Zielona Góra
Podziękował: 15 razy
Pomógł: 55 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: Sokół »

W gcc (stanardowo w DevCpp) można użyć sztuczki z zakresem na case, w tym wypadku:

Kod: Zaznacz cały


    case 8 ... 14:
      cout<<"Nauka w szkole
";
      break;

Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: Crizz »

soku11 pisze:Po trzecie w każdym case musi być instrukcja break, żeby nie wykonywać kolejnych przypadków.
Jeśli dobrze rozumiem polecenie, to chodziło właśnie o to, żeby wykonywać kolejne przypadki. Zresztą poniżej polecenia masz przykład.
monika2109
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 10 mar 2010, o 17:26
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 2 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: monika2109 »

Zrobiłam to jeszcze tak tylko nie wiem jak zrobić żeby wyskakiwały po kolei godziny


#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{unsigned short int g=0;
cout<<"Podaj godzine:";
cin>>g;
switch(g)
{case 7: cout<<g<<" "<<"Pobudka,mycie i sniadanie"<<endl;
case 8: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 9: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 10: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 11: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 12: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 13: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 14: cout<<g<<" "<<"Nauka w szkole"<<endl;
case 15: cout<<g<<" "<<"Obiad"<<endl;
case 16: cout<<g<<" "<<"Odrobienie pracy domowej"<<endl;
case 17: cout<<g<<" "<<"Odrobienie pracy domowej"<<endl;
case 18: cout<<g<<" "<<"Czas wolny"<<endl;
case 19: cout<<g<<" "<<"Czas wolny"<<endl;
case 20: cout<<g<<" "<<"czas wolny"<<endl;
case 21...6 : cout<<g<<g<<" "<<"Spokojny sen"<<endl;
break;

}
system("PAUSE");
return EXIT_SUCCESS;
}
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: Crizz »

W każdej linijce musisz jeszcze zwiększyć g o 1, czyli dopisać g++; (w ten sposób przy wykonywaniu następnej linii kodu zostanie wypisana liczba o jeden większa).

Co do zapisu 21...6, to obawiam się, że kompilator nie jest tak sprytny, żeby domyślić się, że po 23 jest 0 . Nie wiem też, po co w tej linijce kodu wypisujesz zmienną g dwukrotnie. Ani czemu, począwszy od 16, zaczynasz wypisywać g+1 zamiast g.
monika2109
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 10 mar 2010, o 17:26
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 2 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: monika2109 »

g+1 to przez pomyłkę A to jak moge zrobić żeby mi wyświetlił : 21-6-Spokojny sen?
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: Crizz »

"21-6" napisz sama, jako stałą znakową. Dopisz po prostu na górze case 0...6, a na dole case 21...23, w obydwu przypadkach program ma wyświetlić tekst "21-6 Spokojny sen".

W przypadku case 0...6 zamiast g++ musisz oczywiście napisać g=7 (bo następną instrukcją, jaką wykona program, jest ta po case 7, przy której chcesz napisać liczbę 7 niezaleznie od tego, czy użytkownik wcześniej podał liczbę 0,1,2,3,4,5 czy 6).
monika2109
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 10 mar 2010, o 17:26
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 2 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: monika2109 »

A mógłbyś mi to umieścić w tym co napisałam wcześniej? Bo próbuje zrobić tak jak napisałeś ale nic mi nie wychodzi
Crizz
Użytkownik
Użytkownik
Posty: 4094
Rejestracja: 10 lut 2008, o 15:31
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 12 razy
Pomógł: 805 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: Crizz »

Kod: Zaznacz cały

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{unsigned short int g=0;
cout<<"Podaj godzine:";
cin>>g;
switch(g)
{
case 0:case 1: case 2:case 3: case 4: case 5: case 6: cout <<"21-6 Spokojny sen"<<endl; g=6;
case 7: cout<<g<<" "<<"Pobudka,mycie i sniadanie"<<endl; g++;
case 8: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 9: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 10: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 11: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 12: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 13: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 14: cout<<g<<" "<<"Nauka w szkole"<<endl; g++;
case 15: cout<<g<<" "<<"Obiad"<<endl; g++;
case 16: cout<<g<<" "<<"Odrobienie pracy domowej"<<endl; g++;
case 17: cout<<g<<" "<<"Odrobienie pracy domowej"<<endl; g++;
case 18: cout<<g<<" "<<"Czas wolny"<<endl; g++;
case 19: cout<<g<<" "<<"Czas wolny"<<endl; g++;
case 20: cout<<g<<" "<<"czas wolny"<<endl; g++;
case 21: case 22: case 23 : cout<<"21-6 Spokojny sen"<<endl; break;
}
system("PAUSE");
return EXIT_SUCCESS;
}
monika2109
Użytkownik
Użytkownik
Posty: 40
Rejestracja: 10 mar 2010, o 17:26
Płeć: Kobieta
Lokalizacja: Polska
Podziękował: 2 razy

Instrukcje warunkowe if,else oraz instrukcja wyboru switch

Post autor: monika2109 »

Bardzo dziękuje za pomoc:)
ODPOWIEDZ