Poziom 1 zadanie 14 Switch,case
Ostatnio zmodyfikowano 2016-12-10 02:31
BillyCode Temat założony przez niniejszego użytkownika |
Poziom 1 zadanie 14 Switch,case » 2016-12-09 13:20:06 Witam serdecznie. Dopiero zaczynam przygodę z programowaniem i mam pewien problem dotyczący zadania domowego 14 z poziomu kursu 1, czyli prostego kalkulatora na dwie liczby napisanego za pomocą funkcji przełączania switch. Zamieszczam poniżej kod źródłowy i opis problemu : #include <iostream> #include <cmath> using namespace std; int main() { int a, b; char oper; cout << "Wprowadz warosc ilczby a" << endl; cin >> a; cout << "Wprowadz wartosc liczby b" << endl; cin >> b; cout << "Wprowadz odpowiedni operator - lub + lub * lub /" << endl; cin >> oper; switch( oper ) { case '-': cout << "Wynik dejmowania" << a - b << endl; break; case '+': cout << "Wynik dawania" << a + b << endl; break; case '*': cout << "Wynik mnozenia" << a * b << endl; break; case '/': cout << "Wynik dzielenia" << a / b << endl; if( b = 0 ) cout << "Wynik dzielenia niewykonalny b=0" << endl; break; } system( "PAUSE" ); return 0; } Program poprawnie funkcjonuje poza warunkiem if w przypadku dzielenia przez zero... Kompilator nie zezwala na wykonanie operacji dzielenia przez zero "wywalając" do ponownego debugowania, zamiast wyświetlić "wynik dzielenia nie wykonalny b=0". Help |
|
karambaHZP |
» 2016-12-09 14:37:30 |
|
Anim |
» 2016-12-09 15:18:16 @karambaHZP Pomijając fakt, że odpisałeś, że if(b=0) jest błedne, to nawet nie wskazałeś koledze, jak rozwiązać problem ;p @BillyCode Zauważ, że w kodzie: case '/': cout << "Wynik dzielenia" << a / b << endl; if( b = 0 ) cout << "Wynik dzielenia niewykonalny b=0" << endl;
masz najpierw komendę nakazującą wypisanie wyniku dzielenia, a dopiero potem sprawdzasz warunek, czy b==0 :) w Twoim przypadku powinno być na odwrót (tak jak w matematyce: Najpierw liczysz dziedzinę :), tak i tutaj najpierw musisz sprawdzić, czy b jest zerem), przy czym musisz posłużyć się jeszcze warunkiem else, czyli powinieneś zrobić: case '/': if( b == 0 ) cout << "Wynik dzielenia niewykonalny b=0" << endl; else cout << "Wynik dzielenia" << a / b << endl;
|
|
karambaHZP |
» 2016-12-09 15:48:29 @Anim już poprawiam: Instrukcja warunkowa if ... elseMyślę, że kolejność wykonywania operacji @BillyCode sam jest w stanie rozwiązać, a pomyłka w porównaniu często umyka i trudno ją zauważyć. Dobrym zwyczajem jest pisanie literału po lewej stronie operatora porównania, a zmienną po prawej. Wtedy próba przypisania czegokolwiek do literału kończy się protestem kompilatora. |
|
BillyCode Temat założony przez niniejszego użytkownika |
» 2016-12-09 22:32:22 Dzięki za szybką i konkretną pomoc. Widzę, że czeka mnie powtórka poprzednich lekcji przed przystąpieniem do drugiego poziomu ;) |
|
mateczek |
» 2016-12-10 02:31:38 nie wskazałeś koledze, jak rozwiązać problem |
najlepiej debugerem. https:www.youtube.comwatch?v=L9JvSHYLvuw&t=11s" (wpisz w youtube nazwę swojego IDE + debuger a napweno się coś pojawi). A takie babole jak "=" miast "==" się po prostu zdarzają. Jak trochę programuję w SCL (S7 PLC), który ma składnie pascala to nie ma bata, bym się nie pomylił |
|
« 1 » |