Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Kurs XI - Ćw 2] ( if else)

Ostatnio zmodyfikowano 2009-09-02 21:28
Autor Wiadomość
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.
P-10008
malan
» 2009-09-02 18:57:28
Pokaż ten kod, w którym coś próbowałeś.
P-10009
lukassu16
Temat założony przez niniejszego użytkownika
kod
» 2009-09-02 19:09:47
C/C++
#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";
           
        }
       
        /*
                if (znak == 1)
                {
                    if (star == 20)
                    cout <<"Nie ma juz wolnych miejsc na dany film";
                    else
                    {
                        cout <<"Ile chcesz zamowic biletow??\n";
                        cin >>ile;
                        cin.ignore();
                        if (star + ile > rozmiar)
                            cout <<"Nie ma az tyliu wolnycvh miejcs. Pozostale wolne miejsca to: "<<rozmiar - star<<".\n";
                        else
                        {
                            star += ile;
                            cout <<"Prosze zaplacic "<<ile * 15<<" zlotych.\n";
                        }
                    }
                }
                else if (znak == 2)
                {
                    if (diehard == 20)
                    cout <<"Nie ma juz wolnych miejsc na dany film";
                    else
                    {
                        cout <<"Ile chcesz zamowic biletow??\n";
                        cin >>ile;
                        cin.ignore();
                        if (diehard + ile > rozmiar)
                            cout <<"Nie ma az tyliu wolnycvh miejcs. Pozostale wolne miejsca to: "<<rozmiar - diehard<<".\n";
                        else
                        {
                            diehard += ile;
                            cout <<"Prosze zaplacic "<<ile * 15<<" zlotych.\n";
                        }
                    }
                }
                else if (znak == 3)
                {
                    if (krzyzacy == 20)
                    cout <<"Nie ma juz wolnych miejsc na dany film";
                    else
                    {
                        cout <<"Ile chcesz zamowic biletow??\n";
                        cin >>ile;
                        cin.ignore();
                        if (krzyzacy + ile > rozmiar)
                            cout <<"Nie ma az tyliu wolnycvh miejcs. Pozostale wolne miejsca to: "<<rozmiar - krzyzacy<<".\n";
                        else
                        {
                            krzyzacy += ile;
                            cout <<"Prosze zaplacic "<<ile * 15<<" zlotych.\n";
                        }
                    }
                }
                else if (znak == 4)
                {
                    if (killer == 20)
                    cout <<"Nie ma juz wolnych miejsc na dany film";
                    else
                    {
                        cout <<"Ile chcesz zamowic biletow??\n";
                        cin >>ile;
                        cin.ignore();
                        if (killer + ile > rozmiar)
                            cout <<"Nie ma az tyliu wolnycvh miejcs. Pozostale wolne miejsca to: "<<rozmiar - killer<<".\n";
                        else
                        {
                            killer += ile;
                            cout <<"Prosze zaplacic "<<ile * 15<<" zlotych.\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
P-10012
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 if
if(( 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 ?!?!
P-10018
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?
P-10020
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.
P-10021
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?
P-19268
« 1 »
  Strona 1 z 1