[Kurs XI - Ćw 2] ( if else)
Ostatnio zmodyfikowano 2009-09-02 21:28
lukassu16 Temat założony przez niniejszego użytkownika |
[Kurs XI - Ćw 2] ( if else) » 2009-09-02 18:46:17 Mam problem z zadaniem, w którym mam zaprogramować program kino. Robię coś ale cały czas nie działa tak, jak ja bym chciał. Proszę o pomoc. |
|
malan |
» 2009-09-02 18:57:28 Pokaż ten kod, w którym coś próbowałeś. |
|
lukassu16 Temat założony przez niniejszego użytkownika |
kod » 2009-09-02 19:09:47 #include <iostream>
using namespace std;
int main() { char znak, znak1; int ile; int const rozmiar = 20; int star = 0, diehard = 0, krzyzacy = 0, killer = 0; while( znak1 != 'q' ) { cout << "Wybiez seans:\n (15 zl. za bilet)\n"; cout << "1. Star wars\n"; cout << "2. Szklana Pulapka\n"; cout << "3. Krzyzacy\n"; cout << "4. Killer\n"; cin >> znak; cin.ignore(); cout << "Ile chcesz zamowic biletow??\n"; cin >> ile; cin.ignore(); if(( znak == 1 ) &&( 20 - star < ile ) ) { star += ile; cout << "Prosze zaplacic " << ile * 15 << " zlotych.\n"; } else if( znak == 2 && rozmiar - diehard < ile ) { star += ile; cout << "Prosze zaplacic " << ile * 15 << " zlotych.\n"; } else if( znak == 3 && rozmiar - krzyzacy < ile ) { star += ile; cout << "Prosze zaplacic " << ile * 15 << " zlotych.\n"; } else if( znak == 4 && rozmiar - killer < ile ) { star += ile; cout << "Prosze zaplacic " << ile * 15 << " zlotych.\n"; } else { cout << "Nie ma tylu biletow.\n"; } cout << "Czy chcesz zakoczyc program?? Zrob to tylko jesli seans sie skaczy,\n" << "gdyz program utraci dane\nJesli seans sie skaczyl wcisnij 'q'"; cin >> znak1; cin.ignore(); } getchar(); return 0; } //na oba sposoby probawałem jeden jest w komentarzu |
|
GoldWolf |
» 2009-09-02 21:14:25 Robię coś ale cały czas nie działa tak, jak ja bym chciał.Masz dwa błędy w instrukcji ifif(( znak == 1 ) &&( 20 - star < ile ) ) Po pierwsze znak == 1 nie sprawdzasz czy wprowadzono liczbę jeden, tylko czy wprowadzono znak(klawisz 1). Gdybyś chciał tak to napisać za pomocą liczby to musiało by być tak, znak == 49. Ponieważ kod ASCII o wartości 49 odpowiada wciśnięciu klawisza 1. Drugi błąd to (20 - star < ile) -> przecież biletów ma być mniej niż 20 a nie więcej ?!?! |
|
lukassu16 Temat założony przez niniejszego użytkownika |
» 2009-09-02 22:20:52 Dzięki już wiem na czym polegają moje błędy. Co do tego drugiego błędu za krótko widocznie myślałem.
A jeszcze mam jedno pytanie. Nie zakładam nowego wątku bo dotyczy na swój sposób podobnej lekcji. Robię teraz lekcje 12. I jakoś tablice dwuwymiarowa , gdzie są zapisane łańcuchy potrafię zrobić, ale już trójwymiarowej nie potrafię. Czy mógłby mi ktoś napisać wzór, model takiej tablicy? |
|
GoldWolf |
» 2009-09-02 22:30:33 Ale czemu kodem ASCII? Używany przez ciebie kompilator nie wspiera literałów znakowych ('1' itp.)Hola, ja nie pokazuje rozwiązania tylko błędy.
Chodzi dokładnie to byś użył znak = '1'; -> to jest najlepsze rozwiązanie.
PS Co do drugiego pytania załóż nowy temat. Szczególnie, że dotyczy innej lekcji. |
|
manfred |
» 2009-09-02 21:28:18 Ale czemu kodem ASCII? Używany przez ciebie kompilator nie wspiera literałów znakowych ('1' itp.), więc musisz używać magic numbers? Wiesz, że po nabraniu takiego nawyku trudno jest się go pozbyć, a w kodzie produkcyjnym spowoduje to dużą liczbę wtfów/minutę (wskaźnik jakości kodu - im mniej wtf/min, tym kod jest lepszy), bo współpracownicy będą się zastanawiać, czemu właśnie ta, nie inna liczba? |
|
« 1 » |