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

Błędy, ale gdzie?

Ostatnio zmodyfikowano 2010-12-30 16:03
Autor Wiadomość
marcin1133
Temat założony przez niniejszego użytkownika
Błędy, ale gdzie?
» 2010-12-30 15:37:23
Otóż napisałem prosty kalkulator, nie jestem w pełni zadowolony z niego i pewnie zaraz mnie zjedziecie za używanie goto, ale problem tkwi w czymś innym. Kalkulator teoretycznie działa, kompiluje się, ale nie wypisuje poprawnego wyniku.
Oto kod źródłowy:
C/C++
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
    double a, b;
    short typ;
    double wynik = 0;
   
    do
    {
        cout << "\nWynik = " << wynik << endl;
        for( char x = 'a'; x != 'c'; x++ )
        {
            cout << "Podaj liczbe " << x << ": ";
            if( x == a )
                 cin >> a;
            else
                 cin >> b;
           
            if( cin.fail() )
            {
                cout << "Wystapily bledy";
                break;
            }
           
            cin.clear();
            cin.sync();
           
        };
       
        if( cin.fail() )
        {
            cin.clear();
            cin.sync();
            cout << "\nSprobuj jeszcze raz";
            goto koniec;
           
        }
        cout << "Wybierz typ dzialania: \n"
        << "[1] Dodawanie\n"
        << "[2] Odejmowanie\n"
        << "[3] Mnozenie\n"
        << "[4] Dzielenie\n"
        << "[5] Zakoncz\n";
        cin >> typ;
       
        if( typ == 4 && b == 0 )
        {
            cout << "Nie mozna dzielic przez zero!\n";
            goto koniec;
        }
        else
        switch( typ )
        {
        case 1:
            wynik = a + b;
            break;
           
        case 2:
            wynik = a - b;
            break;
           
        case 3:
            wynik = a * b;
            break;
           
        case 4:
            wynik = a / b;
            break;
           
        case 5:
            cout << "Do zobaczenia!\n";
            break;
           
           
        default:
            cout << "Nieprawidlowe dzialanie, sprobuj jeszcze raz\n";
            cin.clear();
            cin.sync();
            break;
        };
       
        koniec:;
    } while( typ != 5 );
   
    cout << "\n\n\tKoniec";
    getch();
    return 0;
}
Ma ktoś jakieś pomysły co robię źle? Z góry dziękuje za pomoc.
P-25939
DejaVu
» 2010-12-30 15:45:42
Daj przykładowe dane testowe dla których program działa źle.
P-25942
ison
» 2010-12-30 15:50:39
masz straszny bałagan w kodzie

C/C++
do
{
    cout << "\nWynik = " << wynik << endl;
najpierw wypisujesz wynik a potem wczytujesz?

C/C++
if( x == a )
tu chyba powinno być 'a' a nie zmienna a(która ma niewiadomą wartość na początku)

po co ten średnik na końcu fora?

po poprawie a na 'a' program działa 'dobrze' ;)
P-25944
marcin1133
Temat założony przez niniejszego użytkownika
» 2010-12-30 16:03:01
Czyli komputer przypisywał jakąś losową wartość do a i cokolwiek bym nie wpisał wychodziło "NaN". Dzięki, teraz już dobrze. Wiem, że trochę to wszystko chaotyczne, ale wydaje mi się, że przynajmniej działa tak jak chciałem i sprawdza wszystko jak należy.
P-25949
« 1 »
  Strona 1 z 1