• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z if.. (else)

Object Storage Arubacloud
0 głosów
213 wizyt
pytanie zadane 28 listopada 2015 w C i C++ przez c1h4r2 Nowicjusz (120 p.)

Witam!

Mam pewien problem z kodem. Może najpierw podeślę link, aby można było go łatwiej zrozumieć :)
 

Chodzi o to, że chciałbym, aby w trakcie gry, w momencie kiedy wybierzemy inną opcję niż: 1,2,3,4,5 wyświetlił się komunikat dot. złej opcji. Postanowiłem napisać to w taki sposób: (115 linia). Niestety nie działa w przypadku liczb, jedynie liter. Nawet jeśli zadziała, to automatycznie gra się kończy, a chciałbym aby pojawił się komunikat i gra była dalej kontynuowana. 

Bardzo proszę o pomoc w rozwiązaniu problemu. Pozdrawiam!

4 odpowiedzi

+2 głosów
odpowiedź 28 listopada 2015 przez Nostalgiczny Obywatel (1,180 p.)

Witaj. Diagnostyke powinieneś zrobić po cin od razu. Przykładowo:

cout << "Podaj liczbe od 1 do 5: ";
int zmienna;
cin >> zmienna;
cout << endl;
while(zmienna>5 or zmienna<1 or !cin.good())
{
cout << "Podales zle dane! Podaj ponownie: ";
cin.clear();
cin.sync();
cin>>zmienna;
cout << endl;
}
komentarz 29 listopada 2015 przez c1h4r2 Nowicjusz (120 p.)
Bardzo dziękuję!!
+1 głos
odpowiedź 28 listopada 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)
edycja 28 listopada 2015 przez Sebastian Fojcik

Zabawnie formatujesz swój kod. Te przesunięcia są.... nieeleganckie. Poza tym, jak wkleiłem Twój kod do swojego środowiska, to automatycznie przesunięcia schodkowe, które sobie zastosowałeś - zniknęły :-P

Zasady przesuwania w poziomie za pomocą TAB są proste: za pomocą przesunięć oddzielamy od siebie różne zakresy (lokalne).
(Wyjątkiem od tej reguły są etykiety (w C++ są to słowa zakończone dwukropkiem). Etykiety nie są przesuwane w prawo)

W Twoim przypadku, jest idealna sytuacja do zastosowania instrukcji switch()

cin >> krok;
switch( krok )
{
case 1:
 
case 2:

case 3:

// ...

default:

}

Wszystko się ładnie pokoloruje i ułoży. Polecam :-)

komentarz 28 listopada 2015 przez Nostalgiczny Obywatel (1,180 p.)
przywrócone 28 listopada 2015 przez Nostalgiczny

Witaj. Diagnostyke powinieneś zrobić po cin od razu. Przykładowo:

cout << "Podaj liczbe od 1 do 5: ";
int zmienna;
cin >> zmienna;
cout << endl;
while(zmienna>5 or zmienna<1 or !cin.good())
{
cout << "Podales zle dane! Podaj ponownie: ";
cin.clear();
cin.sync();
cin>>zmienna;
cout << endl;
}

 

komentarz 28 listopada 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)
edycja 28 listopada 2015 przez Sebastian Fojcik
Ja tylko komentuję zapis kolegi. Użycie przez niego przesunięć. Kod ze switchem wkleiłem jako schemat działania switch. Mój post nie jest bezpośrednią odpowiedzia na pytanie. Twój komentarz już owszem

Dzięki :-)
komentarz 28 listopada 2015 przez Nostalgiczny Obywatel (1,180 p.)
To ja przepraszam, to miała być odpowiedź ,,główna" a nie pod twoją, po prostu coś źle popatrzyłem i nie wrzuciłem tu gdzie trzeba :D
komentarz 28 listopada 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)
To popraw i wyślij jako odpowiedź. Dostaniesz łapeczkę ode mnie :-)
komentarz 29 listopada 2015 przez c1h4r2 Nowicjusz (120 p.)
Bardzo dziękuję za radę! Jest to moja pierwsza "gra", którą zrobiłem po 3 lekcjach Pana Mirosława, dlatego nie użyłem instrukcji switch() z tego względu, że jeszcze jej nie poznałem:P Oczywiście posłucham się do zasad przesunięć. Jeszcze raz dziękuję.
0 głosów
odpowiedź 28 listopada 2015 przez Dorion300 Szeryf (90,250 p.)
Napisz jeden "if"

Potem następne if'y wpisuj "else if"

A następnie na koniec ostatecznie samo "else"

PS: NIe za dużo tych klamerek?
0 głosów
odpowiedź 29 listopada 2015 przez Marek Gołąbek Nowicjusz (140 p.)

Witam.:) A moje pytanie brzmi troche inaczej. Jak by to wygladalo na if'ach ? zmienilem "krok" na typ char i niby jest wszystko ok, ale caly czas, pomimo zlego znaku gra mi przechodzi o jeden poziom wyzej. Podobnie z koszarami itd. Nie powinien wykonac if'a np. gdy (poziom>=10) , a mimo tego wykonuje to. Domyslam sie ze to kwestia dobrze dopisanego else'a lub kolejnego if'a. Probowalem zrobic kolejny warunek z poziom++ , ale nic mi to nie dalo. Jakies propozycje?;)

ps:( nie posiadam polskich znakow na systemie, tak jakos wypadlo);)

Podobne pytania

0 głosów
1 odpowiedź 246 wizyt
pytanie zadane 7 lipca 2019 w C i C++ przez magda_19 Gaduła (3,080 p.)
0 głosów
2 odpowiedzi 249 wizyt
pytanie zadane 26 lutego 2019 w C i C++ przez de1vee Nowicjusz (220 p.)
–1 głos
1 odpowiedź 1,701 wizyt
pytanie zadane 24 października 2018 w C i C++ przez Paweł123 Nałogowiec (33,500 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...