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

Rozdział 14 - zatwierdzanie znaków działania.

Ostatnio zmodyfikowano 2013-05-30 23:25
Autor Wiadomość
Fertood
Temat założony przez niniejszego użytkownika
Rozdział 14 - zatwierdzanie znaków działania.
» 2013-05-30 22:06:16
Witam. :)
Przerabiam właśnie pracę domową z 14 rozdziału, lecz dla sprawdzenia siebie chciałem w niej trochę pokombinować. To jednak doprowadziło do pewnego problemu. Przy komendzie 'if' jeżeli znak ma wartość +, -, /, * to powinien otworzyć dalej zagnieżdżoną sekwencję. Okazuje się jednak, że gdy podam np. "a" to i tak otworzy ta dalszą część.
Tu zrzut programu.

C/C++
#include <iostream>
using namespace std;
int main()


{
    float liczba1;
    float liczba2;
    char znak;
    bool dobre;
   
   
    cout << "Podaj liczbe!" << endl;
    cin >> liczba1;
    dobre = cin.good();
    if( dobre == true )
    {
        cin.clear();
        cin.sync();
        cout << "Podaj znak dzialania!" << endl;
        cin >> znak;
       
       
        if( znak == '+' || '-' || '*' || '/' ) <------Komenda sprawiaj ą ca k ł opot.
       
        {
            cout << "Podaj druga liczbe!" << endl;
            cin >> liczba2;
            dobre = cin.good();
            if( dobre == true )
           
            switch( znak )
            {
            case '+':
                cout <<( liczba1 + liczba2 ) << endl;
                break;
            case '-':
                cout <<( liczba1 - liczba2 ) << endl;
                break;
            case '*':
                cout <<( liczba1 * liczba2 ) << endl;
                break;
            case '/':
                cout <<( liczba1 / liczba2 ) << endl;
                break;
                /* default:
                                                                    cout << "Podales nieodpowiedni znak!";
                                                                    break; */
            }
            else
                 cout << "Podales zle wartosci!";
           
            return 0;
        }
       
        else
             cout << "Podales zle wartosci!";
       
        return 0;
       
       
    }
    else
         cout << "Podales zle wartosci!";
   
    return 0;
}

Z góry dzięki za pomoc. ;)
P-84408
Rafals
» 2013-05-30 22:53:36
Cześć.
Jeszcze raz przejrzyj rozdział 13*. W szczególności jak powinna wyglądać składnia kilku wyrażeń logicznych w instrukcji warunkowej.
P-84412
megatron
» 2013-05-30 22:57:18
Nie mozesz pisac czegos takiego
if( znak == '+' || '-' || '*' || '/' )
 
P-84413
megatron
» 2013-05-30 23:02:32
Nie mozesz pisac czegos takiego
if( znak == '+' || '-' || '*' || '/' )
 Wedlug twojego kodu program sprawdza tylko pierwszy znak.

#@#EDIT#@#
Sry za spam :))
P-84414
Fertood
Temat założony przez niniejszego użytkownika
» 2013-05-30 23:13:52
Dzięki. Przejrzenie jeszcze raz 13 i dopominek "sprawdza tylko pierwszy znak." pomogły mi znaleźć rozwiązanie. ;)
Wystarczyło zastosować dodatkowy nawias i powtórzyć zapis ze zmienną:
if (znak == '+' || znak =='-' || znak == '*' || znak == '/' )

To jeszcze jedno dodatkowe pytanie z mojej strony. Czy da się ten zapis uprościć, trochę w taki sposób jak próbowałem w pierwotnej wersji kodu, czy zawsze trzeba przepisywać " znak == [...] " ?
P-84415
megatron
» 2013-05-30 23:24:12
Jesli chodzi o zmienne typu char to musisz sprawdzac kazdy znak
P-84418
Fertood
Temat założony przez niniejszego użytkownika
» 2013-05-30 23:25:10
Hmm.. Ok. A więc wszystko objaśnione. Temat zamykam. ;)
P-84419
« 1 »
  Strona 1 z 1