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

Lekcja 15 - kalkulator

Ostatnio zmodyfikowano 2012-06-08 12:23
Autor Wiadomość
Berux
Temat założony przez niniejszego użytkownika
» 2012-06-07 22:55:07
To jak mam to napisac? Przeciez wszystko dziala poprawnie.

/edit:

Chodzi o czytelnośc kodu?
P-58051
f0g
» 2012-06-08 02:51:26
Przypomnij sobie » Kurs C++ » Poziom 1Warunek wielokrotnego wyboru switch ... case lekcja . Bez tego ani rusz :)
P-58059
jsc
» 2012-06-08 10:42:21
To jak mam to napisac? Przeciez wszystko dziala poprawnie.

Podwójne wykonanie tego co ma się wykonać raz nazywasz poprawnym działaniem?

Chodzi o co chodzi:
C/C++
if( dzialanie == 4 )
     cout << a << " / " << b << " = " << a / b << endl;


if(( a == 0 || b == 0 ) && dzialanie == 4 )
     cout << a << " / " << b << " = 0" << endl;


Przyjrzyj się i zastanów się, który przypadek jest niezbędny dla prawidłowego wykonania programu. Zostaw go, a drugi skasuj.
P-58076
Berux
Temat założony przez niniejszego użytkownika
» 2012-06-08 11:05:36
Ale już edytowałem wiadomośc i wstawiłem nowy kod:
C/C++
#include <iostream>

using namespace std;

int main()

{
    int a, b, dzialanie;
   
    do
    {
        cout << "Podaj pierwsza liczbe: ";
        cin.sync();
        cin.clear();
        cin >> a;
       
        cout << "Podaj druga liczbe: ";
        cin.sync();
        cin.clear();
        cin >> b;
       
        cout << "Jakie dzialanie chcesz wykonac?" << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Rezygnuj " << endl;
        cin.sync();
        cin.clear();
        cin >> dzialanie;
       
        if( dzialanie == 1 )
             cout << a << " + " << b << " = " << a + b << endl;
       
        if( dzialanie == 2 )
             cout << a << " - " << b << " = " << a - b << endl;
       
        if( dzialanie == 3 && a > 0 && b > 0 )
             cout << a << " * " << b << " = " << a * b << endl;
       
        if( dzialanie == 4 && a > 0 && b > 0 )
             cout << a << " / " << b << " = " << a / b << endl;
       
        if( dzialanie == 5 )
             cout << "Koniec" << endl;
       
        if(( a == 0 || b == 0 ) && dzialanie == 3 )
             cout << a << " * " << b << " = 0" << endl;
       
        if(( a == 0 || b == 0 ) && dzialanie == 4 )
             cout << a << " / " << b << " = 0" << endl;
       
        if( dzialanie < 1 || dzialanie > 5 )
             cout << "Nie ma takiej opcji w menu." << endl;
       
    } while( dzialanie < 1 || dzialanie > 5 );
   
   
   
    return 0;
}
I wypisuje tylko raz.
P-58078
jsc
» 2012-06-08 11:13:49
A jednak będę się upierał, że warunek:
C/C++
if( dzialanie == 3 &&(( a > 0 && b > 0 ) ||( a == 0 || b == 0 ) ) )

Jest lepszy niż oddzielenie ich w postaci:
C/C++
if( dzialanie == 3 && a > 0 && b > 0 )
     cout << a << " * " << b << " = " << a * b << endl;

if(( a == 0 || b == 0 ) && dzialanie == 3 )
     cout << a << " * " << b << " = 0" << endl;
//Dla wyniku jest równoznaczne z cout << a << " * " << b << " = " << a * b << endl;, czyli tylko gmatwa logikę programu
//Zaś dla działania 4 z matematycznego punktu widzenia nie zawsze.
P-58081
Berux
Temat założony przez niniejszego użytkownika
» 2012-06-08 11:27:02
Czyli ten kod jest poprawny?:
C/C++
#include <iostream>

using namespace std;

int main()

{
    int a, b, dzialanie;
   
    do
    {
        cout << "Podaj pierwsza liczbe: ";
        cin.sync();
        cin.clear();
        cin >> a;
       
        cout << "Podaj druga liczbe: ";
        cin.sync();
        cin.clear();
        cin >> b;
       
        cout << "Jakie dzialanie chcesz wykonac?" << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Rezygnuj " << endl;
        cin.sync();
        cin.clear();
        cin >> dzialanie;
       
        if( dzialanie == 1 )
             cout << a << " + " << b << " = " << a + b << endl;
       
        if( dzialanie == 2 )
             cout << a << " - " << b << " = " << a - b << endl;
       
        if( dzialanie == 3 &&(( a > 0 && b > 0 ) ||( a == 0 || b == 0 ) ) )
       
        if( dzialanie == 4 &&(( a > 0 && b > 0 ) ||( a == 0 || b == 0 ) ) )
       
       
        if( dzialanie == 5 )
             cout << "Koniec" << endl;
       
       
       
        if( dzialanie < 1 || dzialanie > 5 )
             cout << "Nie ma takiej opcji w menu." << endl;
       
    } while( dzialanie < 1 || dzialanie > 5 );
   
   
   
    return 0;
}

PS Jestem na laptopie i nie mam na nim IDE.
P-58082
jsc
» 2012-06-08 12:06:55
Do doskonałości brakuje ci odpowiedniej reakcji na próbę dzielenia przez 0.
P-58085
Berux
Temat założony przez niniejszego użytkownika
» 2012-06-08 12:23:27
To jak mam to napisac? Nie może byc ten poprzedni kod?
P-58086
1 « 2 »
Poprzednia strona Strona 2 z 2