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

Poziom 1 zadanie 14 Switch,case

Ostatnio zmodyfikowano 2016-12-10 02:31
Autor Wiadomość
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 :

C/C++
#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
P-154680
karambaHZP
» 2016-12-09 14:37:30
C/C++
if( b = 0 )
» Kurs C++ » Poziom 1Operacje porównania lekcja
P-154681
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:
C/C++
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ć:

C/C++
case '/':
if( b == 0 ) cout << "Wynik dzielenia niewykonalny b=0" << endl;
else cout << "Wynik dzielenia" << a / b << endl;

P-154682
karambaHZP
» 2016-12-09 15:48:29
@Anim już poprawiam:
» Kurs C++ » Poziom 1Instrukcja warunkowa if ... else lekcja
Myś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.
P-154683
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 ;)
P-154709
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ł
P-154716
« 1 »
  Strona 1 z 1