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

Rozdzial 15 kalkulator

Ostatnio zmodyfikowano 2016-10-05 14:04
Autor Wiadomość
ARdiann
kalkulator
» 2016-10-04 23:11:12
Jeśli mogę się podpiąć, to zrobiłem podobny kalkulator tylko z tym, że po wpisaniu nieprawidłowej wartości (np. a,b,sto) wyskakuje komunikat i program się zamyka, chciałbym żeby się nie zamykał i dalej powtarzał instrukcję i jest jeszcze jeden mały problem, pierwsza instrukcja "Podaj liczby" po wpisaniu liczb znowu się pojawia, później już działa normalnie. Wiem, że jest to spowodowane prawdopodobnie tym, że napisałem tą samą instrukcje 2 razy, raz przed użyciem do...while i drugi raz w pętli. Jak usunę instrukcje sprzed do..while to program po prostu nie działa prawidłowo, przechodzi do ostatniej instrukcji "Podano nieprawidłowa liczbę" i się wyłącza.
Tak w skrócie - chciałbym żeby program po wpisaniu nieprawidłowej wartości dalej powtarzał instrukcje, i żeby nie podwajało mi z początku 2 razy tej samej instrukcji.
C/C++
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    char z;
    bool aa, bb;
    cout << "**** KALKULATOR ****" << endl;
    cout << "Podaj 2 liczby" << endl;
    cin >> a;
    aa = cin.good();
    cin >> b;
    bb = cin.good();
    { if( aa, bb == true )
        { do
            {
                cout << "Podaj 2 liczby" << endl;
                cin >> a;
                aa = cin.good();
                cin >> b;
                bb = cin.good();
                cout << "Wybierz dzialanie" << endl << "1. Dodawanie (+)" << endl << "2. Odejmowanie (-)" << endl << "3. Mnozenie (*)" << endl << "4. Dzielenie (/)" << endl << "5. Zakoncz program." << endl;
                cin >> z;
                switch( z )
                {
                case '1':
                    cout << "Wynik to: " << a + b << endl;
                    break;
                case '2':
                    cout << "Wynik to: " << a - b << endl;
                    break;
                case '3':
                    cout << "Wynik to:" << a * b << endl;
                    break;
                case '4':
                    cout << "Wynik to:" << a / b << endl;
                    break;
                case '5':
                    cout << "Zakonczono.";
                    break;
                default:
                    cout << "Zly wybor";
                }
            }
            while( z != '5' );
           
        }
        else
        {
            cout << "Podano nieprawidlowa liczbe." << endl;
        } }
    return 0;
}
P-152257
karambaHZP
» 2016-10-05 05:45:42
if( aa, bb == true )
Nie tak się pisze złożone warunki.

chciałbym żeby program po wpisaniu nieprawidłowej wartości dalej powtarzał instrukcje,
Czyszczenie strumienia
std::cin.clear()
 oraz
std::cin.ignore()
.

żeby nie podwajało mi z początku 2 razy tej samej instrukcji.
To możesz samemu rozwiązać. Popracuj nad kolejnością działań. Wystarczy zerknąć jak to rozwiązał autor tematu.
P-152263
ARdiann
» 2016-10-05 14:04:33
Poprawiłem, dzięki za naprowadzenie.
Wkleję kod jakby ktoś miał podobny problem.
C/C++
#include <iostream>
using namespace std;
int main()
{
    int a, b;
    char z;
    bool aa, bb;
    cout << "**** KALKULATOR ****" << endl;
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj 2 liczby" << endl;
        cin >> a;
        aa = cin.good();
        if( aa == true )
             cin >> b;
       
        bb = cin.good();
        { if( aa == true && bb == true )
            { cout << "Wybierz dzialanie" << endl << "1. Dodawanie (+)" << endl << "2. Odejmowanie (-)" << endl << "3. Mnozenie (*)" << endl << "4. Dzielenie (/)" << endl << "5. Zakoncz program." << endl;
                cin >> z;
                switch( z )
                {
                case '1':
                    cout << "Wynik to: " << a + b << endl;
                    break;
                case '2':
                    cout << "Wynik to: " << a - b << endl;
                    break;
                case '3':
                    cout << "Wynik to:" << a * b << endl;
                    break;
                case '4':
                    cout << "Wynik to:" << a / b << endl;
                    break;
                case '5':
                    cout << "Zakonczono." << endl;
                    break;
                default:
                    cout << "Zly wybor" << endl;
                } } else cout << "Nieprawidlowa liczba" << endl; }
       
    }
    while( z != '5' );
   
    return 0;
}
P-152267
1 « 2 »
Poprzednia strona Strona 2 z 2