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

Instrukcja warunkowa if.

Ostatnio zmodyfikowano 2016-01-24 20:44
Autor Wiadomość
Vesania00
Temat założony przez niniejszego użytkownika
Instrukcja warunkowa if.
» 2016-01-24 20:10:17
Mój pierwszy program wygląda tak:
C/C++
#include <iostream>

using namespace std;

int main()
{
    int predkosc, punkty_karne, godzina = 12;
    int odpowiedz;
   
    cout << "Z jaka predkoscia jechales o " << godzina << "?" << endl;
    cin >> predkosc;
   
    if( predkosc <= 50 )
    {
        cout << "Jechales wtedy bezpiecznie." << endl;
        punkty_karne = 0;
    }
    else
    {
        cout << "No, no... przekroczyles predkosc!" << endl;
        punkty_karne = 1;
    }
    //Tutaj bêdê musia³ wróciæ, by zapêtliæ ca³y program.
    t:
    godzina = godzina + 1;
    cout << "Jechales jeszcze dzisiaj o godzinie " << godzina << "? (Tak=1/Nie=0)" << endl;
    cin >> odpowiedz;
    if( odpowiedz = 1 )
    {
        if( godzina < 15 )
        {
            cout << "Z jaka predkoscia jechales o godzinie " << godzina << "?" << endl;
            cin >> predkosc;
            if( predkosc <= 50 )
            {
                cout << "Jechales wtedy tez bezpiecznie." << endl;
            }
            else
            {
                cout << "No, no... Znow przekroczyles predkosc!/n";
                punkty_karne = punkty_karne + 1;
            }
            goto t;
        }
        else
       
        {
            cout << "O tej godzinie i pozniej mogles juz jezdzic bez limitu." << endl << "Uzbierales w sumie dzisiaj: " << punkty_karne << " punktow karnych!" << endl;
            if( punkty_karne + 3 == 6 )
            {
                cout << endl << "Niestety, ale musimy Ci zabrac prawo jazdy! :(" << endl;
            }
            else
            {
                cout << "Dzisiaj zachowujesz prawo jazdy!" << endl;
            }
           
        }
        return 0;
    }
    else
    {
        cout << "Dziêkujemy za testy!" << endl << "Uzbierales tylko " << punkty_karne << " i jestes bezpieczny." << endl;
    }
   
   
    return 0;
}
W miejscu, gdzie należy wybrać T lub N, program źle reaguje na N. Jakby to pomijało. Ponad to, kiedy zmieniłem T i N, na wartości liczczbowe 1 i 0, to program zachowywał się jeszcze inaczej. Proszę o wskazówkę co powinienem zmienić. Dodam, że jestem na zaawansowanym początku kursu programowania.
P-143960
pekfos
» 2016-01-24 20:11:59
C/C++
if( odpowiedz = 1 )
To nie jest porównanie z 1.
P-143961
Vesania00
Temat założony przez niniejszego użytkownika
» 2016-01-24 20:15:59
C/C++
#include <iostream>

using namespace std;

int main()
{
    int predkosc, punkty_karne, godzina = 12;
    int odpowiedz;
   
    cout << "Z jaka predkoscia jechales o " << godzina << "?" << endl;
    cin >> predkosc;
   
    if( predkosc <= 50 )
    {
        cout << "Jechales wtedy bezpiecznie." << endl;
        punkty_karne = 0;
    }
    else
    {
        cout << "No, no... przekroczyles predkosc!" << endl;
        punkty_karne = 1;
    }
    //Tutaj bêdê musia³ wróciæ, by zapêtliæ ca³y program.
    t:
    godzina = godzina + 1;
    cout << "Jechales jeszcze dzisiaj o godzinie " << godzina << "? (T/N)" << endl;
    cin >> odpowiedz;
    if( odpowiedz = T )
    {
        if( godzina < 15 )
        {
            cout << "Z jaka predkoscia jechales o godzinie " << godzina << "?" << endl;
            cin >> predkosc;
            if( predkosc <= 50 )
            {
                cout << "Jechales wtedy tez bezpiecznie." << endl;
            }
            else
            {
                cout << "No, no... Znow przekroczyles predkosc!/n";
                punkty_karne = punkty_karne + 1;
            }
            goto t;
        }
        else
       
        {
            cout << "O tej godzinie i pozniej mogles juz jezdzic bez limitu." << endl << "Uzbierales w sumie dzisiaj: " << punkty_karne << " punktow karnych!" << endl;
            if( punkty_karne + 3 == 6 )
            {
                cout << endl << "Niestety, ale musimy Ci zabrac prawo jazdy! :(" << endl;
            }
            else
            {
                cout << "Dzisiaj zachowujesz prawo jazdy!" << endl;
            }
           
        }
        return 0;
    }
    else
    {
        cout << "Dziêkujemy za testy!" << endl << "Uzbierales tylko " << punkty_karne << " i jestes bezpieczny." << endl;
    }
   
   
    return 0;
}

A gdy będą litery? Proszę o wskazówki co powinienem zrobić.
P-143962
carlosmay
» 2016-01-24 20:17:53
= nie jest operatorem porównania.

goto t;
 to samo zło.
P-143963
Vesania00
Temat założony przez niniejszego użytkownika
» 2016-01-24 20:24:50
Okej, dziękuję bardzo teraz działa. Tylko mam pytanie - dlaczego nie działa, gdy zamiast liczb, odpowiadającym tak lub nie, podstawiam T i N?
P-143964
carlosmay
» 2016-01-24 20:44:40
dlaczego nie działa, gdy zamiast liczb, odpowiadającym tak lub nie, podstawiam T i N?
Ponieważ
int odpowiedz;
 nie jest typu przyjmującego znaki
char
 wprost (bez rzutowania).
P-143965
« 1 »
  Strona 1 z 1