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

Przechodzenie do kolejnej części kalkulatora

Ostatnio zmodyfikowano 2017-01-05 18:23
Autor Wiadomość
HudyWeas
Temat założony przez niniejszego użytkownika
» 2017-01-05 17:42:48
Po poprawkach cały program wygląda tak. Po zastosowaniu twoich zmian nagle zaczęło wszystko działać. usunąłem zbędne dane z int. Dałoby się to jeszcze bardziej uprościć?
C/C++
#include <iostream>
using namespace std;
int main()
{
    int a, b, wynik, znak;
    do
    {
        cout << "Podaj liczbe a: " << endl;
        cin >> a;
        cout << "Podaj liczbe b: " << endl;
        cin >> b;
    } while( a == 0 || b == 0 );
   
    cout << "Wybierz dzialanie:" << endl;
    cout << "[1] Dodawanie" << endl;
    cout << "[2] Odejmowanie" << endl;
    cout << "[3] Mnozenie" << endl;
    cout << "[4] Dzielenie" << endl;
    cout << "[5] Koniec" << endl;
    cin >> znak;
    switch( znak )
    {
    case 1:
        {
            wynik = a + b;
            cout << "a + b = " << wynik << endl;
            break;
        }
    case 2:
        {
            wynik = a - b;
            cout << "a -  b = " << wynik << endl;
            break;
        }
    case 3:
        {
            wynik = a * b;
            cout << "a * b = " << wynik << endl;
            break;
        }
    case 4:
        {
            wynik = a / b;
            cout << "a / b = " << wynik << endl;
            break;
        }
    case 5:
        {
            return 0;
        }
        default:
        cout << "Zly znak" << endl;
        break;
    }
   
    do
    {
        do
        {
            cout << "Wynik: " << wynik << endl;
            cout << "Podaj liczbe b: " << endl;
            cin >> b;
        } while( b == 0 );
       
        cout << "Wybierz dzialanie:" << endl;
        cout << "[1] Dodawanie" << endl;
        cout << "[2] Odejmowanie" << endl;
        cout << "[3] Mnozenie" << endl;
        cout << "[4] Dzielenie" << endl;
        cout << "[5] Koniec" << endl;
        cin >> znak;
        switch( znak )
        {
        case 1:
            {
                wynik = wynik + b;
                cout << "wynik + b = " << wynik << endl;
                break;
            }
        case 2:
            {
                wynik = wynik - b;
                cout << "wynik -  b = " << wynik << endl;
                break;
            }
        case 3:
            {
                wynik = wynik * b;
                cout << "wynik * b = " << wynik << endl;
                break;
            }
        case 4:
            {
                wynik = wynik / b;
                cout << "wynik / b = " << wynik << endl;
                break;
            }
        case 5:
            {
                return 0;
            }
            default:
            cout << "Zly znak" << endl;
            break;
        }
    } while( wynik != 0 );
   
    return 0;
}
P-156038
karambaHZP
» 2017-01-05 17:48:28
Nie wiem po co są w kodzie dwie instrukcje
switch
.
Przy pobraniu liczb od użytkownika nie musisz sprawdzać obu liczb. Wystarczy, że druga będzie różna od zera (dzielenie przez zero).
Poza tym nawet to można pominąć i sprawdzić dzielnik przed wykonaniem dzielenia i w przypadku dzielnika równego zero
pominąć dzieleni oraz wypisać stosowny komunikat.

Można lepiej nazwać zmienne.
P-156039
HudyWeas
Temat założony przez niniejszego użytkownika
» 2017-01-05 18:05:37
Pierwsza instrukcja
switch
 jest do pierwszej części kalkulatora. Składa się on z 2 części. Pierwsza to utworzenie wyniku. Potrzeba nam do tego 2 liczb. W 2 części następuje dopisywanie do aktualnego wyniku. Nie wiem jak zrobić to przy 1 komendzie
switch
 , ponieważ musiałbym jakoś przy pierwszym obliczeniu wykluczyć
wynik
, a przy drugim i kolejnych obliczeniach
a
 . Uważam, że może i sprawdzanie
a
 nie jest wymagane, ale dzięki temu nie wychodzi 0 + 100 = 100. Powinno to wyglądać tak?
C/C++
int a, b, wynik, znak;
do
{
    cout << "Podaj liczbe a: " << endl;
    cin >> a;
    cout << "Podaj liczbe b: " << endl;
    cin >> b;
   
   
    cout << "Wybierz dzialanie:" << endl;
    cout << "[1] Dodawanie" << endl;
    cout << "[2] Odejmowanie" << endl;
    cout << "[3] Mnozenie" << endl;
    cout << "[4] Dzielenie" << endl;
    cout << "[5] Koniec" << endl;
    cin >> znak;
    if( b == 0 )
         cout << "Blad, nie dziel przez 0" << endl;
   
} while( b == 0 );
P-156040
karambaHZP
» 2017-01-05 18:17:55
0 + 100 = 100. Powinno to wyglądać tak?
Co jest niepoprawnego dodawaniu do zera. Tylko dzielenie przez zero jest niepoprawne.

ponieważ musiałbym jakoś przy pierwszym obliczeniu wykluczyć
wynik
Raczej z treści wynika, że zmienna
wynik
 powinna mieć nadaną wartość początkową
i wykonywać na tej zmiennej działania z użyciem wprowadzanej wartości.

Ach i nie ma w programie zabezpieczenia.
P-156041
HudyWeas
Temat założony przez niniejszego użytkownika
» 2017-01-05 18:23:11
A co do zabezpieczeń brakuje mi chyba tylko na tekst zamiast liczb
P-156042
1 « 2 »
Poprzednia strona Strona 2 z 2