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

Kalkulator, zły wynik

Ostatnio zmodyfikowano 2015-04-17 18:39
Autor Wiadomość
Bubu
Temat założony przez niniejszego użytkownika
Kalkulator, zły wynik
» 2015-04-13 15:40:44
Cześć, mam kolejny problem z kalkulatorem, mianowicie cały czas pokazuje mi wynik 98, nie mam pojęcia skąd to się bierze, ustawiłem już nawet każdej zmiennej wartość 0, ale to nic nie zmienia, ciągle 98.

C/C++
char a = 0;
char b = 0;
int wybor = 0;
int wynik = 0;

int main()
{
    do
    {
        cout << "Podaj liczbe a: " << endl;
        cin >> a;
        if( !isdigit( a ) )
        {
            cout << "To nie jest liczba!" << endl;
        }
    } while( !isdigit( a ) );
   
    do
    {
        cout << "Podaj liczbe b: " << endl;
        cin >> b;
        if( !isdigit( b ) )
        {
            cout << "To nie jest liczba!" << endl;
        }
    } while( !isdigit( b ) );
   
    cout << "Wybierz opcje:\n 1. Dodawanie\n 2. Odejmowanie\n 3. Mnozenie\n 4. Dzielenie\n 5. Koniec" << endl;
    cin >> wybor;
   
    switch( wybor )
    {
    case 1:
        wynik = a + b;
        cout << "Wynik to: " << wynik;
        break;
    case 2:
        wynik = a - b;
        break;
    case 3:
        wynik = a * b;
        break;
    case 4:
        wynik = a / b;
        break;
    case 5:
        cout << "Zamykam";
        break;
    default:
        cout << "Nie ma takiej opcji!";
    }
    return 0;
}
P-130821
Monika90
» 2015-04-13 15:44:35
Zmienne a i b są typu char, typ char służy do przechowywania pojedynczego znaku, a nie liczby.
P-130825
Bubu
Temat założony przez niniejszego użytkownika
» 2015-04-13 15:49:01
Czyli nie mogę użyć w tym wypadku funkcji isdigit?
P-130826
michalo368
» 2015-04-13 15:49:34
Staraj się nie używać zmiennych globalnych ;-)
P-130827
wojownik266
» 2015-04-13 15:54:03
Spróbój zmienić typ zmiemnnych na int albo rzutuj na typ int i zobacz co się będzie działo:

rzutowanie:
C/C++
int( a + b )
P-130828
Bubu
Temat założony przez niniejszego użytkownika
» 2015-04-13 16:03:23
Zmieniałem na int i nie zauważyłem różnicy i teraz znowu leże na samym początku, bo nie mam pojęcia jaki warunek wprowadzić do while.

C/C++
int a;

int main()
{
    do
    {
        cout << "Podaj liczbe A: " << endl;
        cin >> a;
        if( !a )
        {
            cout << "To nie jest liczba!" << endl;
        }
    } while( ???????????????????? ); // a != cin.good()?
   
    return 0;
}

@edit Próbowałem ze zmienną bool, ale nic nie wychodzi. Teraz program się zamyka niezależenie czy wpiszę 3 czy e, pokazuje tylko dobrą wiadomość.

C/C++
int a;
bool poprawnaA;


int main()
{
    do
    {
        cout << "Podaj liczbe A: " << endl;
        cin >> a;
        if( !a )
        {
            cout << "To nie jest liczba!" << endl;
            poprawnaA = cin.fail();
        }
    } while( poprawnaA != cin.fail() );
   
    return 0;
}
P-130831
bragon91
» 2015-04-13 17:25:08
Wydaje mi się że powinno być tak:

C/C++
int a;


int main()
{
    do
    {
        cout << "Podaj liczbe A: " << endl;
        cin >> a;
        if( cin.fail() )
        {
            cout << "To nie jest liczba!" << endl;
        }
    } while( !cin.good() );
   
    return 0;
}

Dodatkowo można dodać czyszczenie strumienia i błędów.

C/C++
int a;


int main()
{
    do
    {
        cout << "Podaj liczbe A: " << endl;
        cin.clear();
        cin.sync();
        cin >> a;
        if( cin.fail() )
        {
            cout << "To nie jest liczba!" << endl;
        }
    } while( !cin.good() );
   
    return 0;
}
P-130839
spike1975
» 2015-04-17 18:39:13
a ja zrobilem zupełnie inaczej ten kalkulator. jeżeli chodzi o ten "prosty kalkulator do działań na dwóch liczbach" z zadania domowego w rozdziale 14.
po prostu wpisuje się tam dzialanie i kalkulator daje wynik. bez żadnych opcji.

nie wiem jak wklejać kod żeby było tak ładnie jak u was ale tak to wygląda:

#include <iostream>
using namespace std;

int main ()
{
    int a, b;
    char dzialanie;


    cout << "*===========================*" << endl;
    cout << "*Jestem prostym karkulatorem*" << endl;
    cout << "*===========================*" << endl;
    cout << endl;
    cout << "przekarkulujmy cos" << endl;
    cout << endl;
    cout << "wpisz dzialanie" << endl;

    cin >> a;
    cin >> dzialanie;
    cin >> b;
/*
    cout << a << endl;    // do testu
    cout << znak << endl; // sprawdzanie co sie
    cout << b << endl;    // wczytalo do zmiennych

*/
    switch (dzialanie)
{

    case '+':
    cout << a << "+" << b << " = " << a+b << endl;
    break;

    case '-':
    cout << a << "-" << b << " = " << a-b << endl;
    break;

    case '*':
    cout << a << "*" << b << " = " << a*b << endl;
    break;

    case '/':
    if (b==0)
    cout << "DZIELENIE PRZEZ 0 VERBOTEN, RAUS!!!!";
    else
    cout << a << "/" << b << " = " << a/b << endl;
    break;
}
    return 0;
}

P-131077
« 1 »
  Strona 1 z 1