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

Pętla do ... while: Zadanie domowe - kalkulator

Ostatnio zmodyfikowano 2017-02-19 12:00
Autor Wiadomość
Brys
Temat założony przez niniejszego użytkownika
Pętla do ... while: Zadanie domowe - kalkulator
» 2017-02-16 20:42:25
Witam
Czy kod, który wklejam niżej jest poprawny? Chcę wiedzieć, bo wolę być pewnym, że program jest ok, niż myśleć, że wszystko umiem i okłamywać samego siebie.
C/C++
#include <iostream>
using namespace std;
int main()
{
    int wynik = 0, dzialanie, liczba1, liczba2;
    do
    {
       
        cin.clear();
        cin.sync();
        cout << "Wynik:" << wynik << endl;
        cout << "Podaj 1 liczbe: ";
        cin >> liczba1;
       
        if( cin.good(), liczba1 != 0 )
        {
            cout << "Podaj 2 liczbe: ";
            cin >> liczba2;
           
            if( cin.good(), liczba2 != 0 )
            {
                cout << "Wybierz dzialanie" << endl;
                cout << "[1] Dodawanie" << endl;
                cout << "[2] Odejmowanie" << endl;
                cout << "[3] Mnozenie" << endl;
                cout << "[4] Dzielenie" << endl;
                cout << "[5] Rezygnuj" << endl;
                cin >> dzialanie;
               
                switch( dzialanie )
                {
                case 1:
                    cout << liczba1 << " + " << liczba2 << " = " << liczba1 + liczba2 << endl;
                    wynik = liczba1 + liczba2;
                    break;
                case 2:
                    cout << liczba1 << " - " << liczba2 << " = " << liczba1 - liczba2 << endl;
                    wynik = liczba1 - liczba2;
                    break;
                case 3:
                    cout << liczba1 << " * " << liczba2 << " = " << liczba1 * liczba2 << endl;
                    wynik = liczba1 * liczba2;
                    break;
                case 4:
                    cout << liczba1 << " / " << liczba2 << " = " << liczba1 / liczba2 << endl;
                    wynik = liczba1 / liczba2;
                    break;
                case 5:
                    return 0;
                    break;
                   
                default:
                    cout << "Nie ma takiej opcji" << endl;
                   
                    break;
                }
            }
        }
       
    } while( liczba1 > 0, liczba2 > 0 );
   
    cout << "Nie podales liczby poprawnie";
   
   
   
   
   
   
    return 0;
}
P-157852
Janusz2
» 2017-02-16 21:14:00
Hej, sam dopiero się uczę i mogę gadać bzdury ale:
Typ danych int pozwala ci na operowanie jedynie liczbami całkowitymi, więc Twój kalkulator będzie wszystko zaokrąglał. Gdy spróbujesz podzielić np. 10/6 wyjdzie Ci 1, aby uczynić wyniki bardziej precyzyjnymi proponuję wprowadzenie, typu float dla liczba1 i liczba2.
P-157853
Brys
Temat założony przez niniejszego użytkownika
» 2017-02-16 22:07:21
Trafna uwaga, zapomniałem o tym. Dzięki.
Czy ktoś ma jeszcze jakieś uwagi?
P-157862
maly7
» 2017-02-17 21:03:59
Zamiast:
while( liczba1 > 0, liczba2 > 0 );

Powinieneś dać:
while( liczba1 > 0 && liczba2 > 0 );

I taka propozycja, dodaj również działania na liczbach ujemnych oraz 0 (zabezpiecz się przed dzieleniem przez 0).
P-157916
Brys
Temat założony przez niniejszego użytkownika
» 2017-02-18 22:01:38
W poleceniu jest napisane, aby kalkulator wykonał obliczenia, jeżeli liczba jest różna od 0
P-157977
czaffik
» 2017-02-18 23:32:48
Nawet nie wiedziałem czy coś takiego zadziała:
C/C++
if( cin.good(), liczba2 != 0 )
pytanie tylko czy to jest równoważne && czy ||, mi się coś wydaje że ||.
Zamiast float możesz śmiało używać double, pamięci ci chyba nie brakuje? no i nie tworzysz wyrzyłowanych aplikacji gdzie każdy bajt pamięci jest na wagę złota.
P-157982
jankowalski25
» 2017-02-19 12:00:40
pytanie tylko czy to jest równoważne && czy ||, mi się coś wydaje że ||
Nie. Istnieje coś takiego, jak
operator ,
 (operator przecinek, można go przeciążać), który zwraca to, co znajduje się po prawej stronie. Przykład:
C/C++
#include <iostream>

int main()
{
    int a = 2;
    int b = 3;
    int c =( a = 5, b ) + 100;
    int d =( a = 7, b = 11, c ) + 200;
    std::cout << a << ' ' << b << ' ' << c << ' ' << d;
}
Standardowe wyjście programu:
7 11 103 303
W tamtym przypadku to sprowadzi się do
if( liczba2 != 0 )
.
P-158005
« 1 »
  Strona 1 z 1