Rozdział 14 - zatwierdzanie znaków działania.
Ostatnio zmodyfikowano 2013-05-30 23:25
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. #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; } 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. ;) |
|
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. |
|
megatron |
» 2013-05-30 22:57:18 Nie mozesz pisac czegos takiego if( znak == '+' || '-' || '*' || '/' ) |
|
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 :)) |
|
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 == [...] " ?
|
|
megatron |
» 2013-05-30 23:24:12 Jesli chodzi o zmienne typu char to musisz sprawdzac kazdy znak |
|
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. ;) |
|
« 1 » |