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

[Lekcja 15] Zadanie domowe, jak odbugować (!)

Ostatnio zmodyfikowano 2012-01-06 13:43
Autor Wiadomość
AbillMara
Temat założony przez niniejszego użytkownika
[Lekcja 15] Zadanie domowe, jak odbugować (!)
» 2011-12-31 19:08:59
Witam !

Mam problem, zrobiłem sobie niedawno zadanie domowe z lekcji 15, w którym polega na:

Napisz prosty kalkulator, który będzie potrafił dodawać, odejmować, mnożyć i dzielić. Program ten ma działać następująco:
1. Wypisuje obecny wynik
2. Wprowadź liczbę
3. Wybierz działanie (jeżeli liczba różna od 0)
4. Wykonaj obliczenia (jeżeli liczba różna od 0)
5. Wróć do kroku 1.
6. Jeżeli wprowadzoną liczbą jest 0, zakończ program.
Przykładowe menu wyboru działania:

[1] Dodawanie
[2] Odejmowanie
[3] Mnożenie
[4] Dzielenie
[5] Rezygnuj

Zabezpiecz wcześniej napisany kalkulator przed podawaniem niepoprawnych liczb i operacji. Wykorzystaj wiedzę zdobytą z pierwszego zadania pracy domowej niniejszego rozdziału. Zabezpiecz również w analogiczny sposób przed możliwością wyboru nieprawidłowego działania.

Nie wiem czy dobrze zrozumiałem te zadanie, a zwłaszcza czy dobrze je napisałem! // Niech spece się wypowiedzą =)
Najlepiej niech ktoś je uruchomi i sprawdzi jakie są bugi tzn. błędy. Ja na razie znalazłem jeden problem z tym programem. Nie wiem jak mam zablokować możliwość wprowadzania liter alfabetu i tych kodów ANSCI (?) (. , !,@,#,$ ... etc.)
Bardzo mi na tym zależy !!! =)

Aha, bym zapomniał wspomnieć o zablokowaniu '0'. (Ale chyba to widać..)
C/C++
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    int dzialanie;
    int liczba1;
    int liczba2;
   
    do
    {
        cout << "-----------------" << endl;
        cout << "- Kalkulator ----" << endl;
        cout << "-----------------" << endl;
        cout << "-----------------" << endl << endl;
        cout << "-----------------" << endl;
        cout << "[1] Dodawanie ---" << endl;
        cout << "-----------------" << endl;
        cout << "[2] Odejmowanie -" << endl;
        cout << "-----------------" << endl;
        cout << "[3] Mnozenie ----" << endl;
        cout << "-----------------" << endl;
        cout << "[4] Dzielenie ---" << endl;
        cout << "-----------------" << endl;
        cout << "[5] Wyjscie -----" << endl;
        cout << "-----------------" << endl;
        cout << "-----------------" << endl << endl;
       
        cout << "Co chcesz wybrac? ";
        cin >> dzialanie;
       
        if( dzialanie == 5 )
        {
            system( "cls" );
            cout << "-------------------------------------------------" << endl;
            cout << "--- Dziekujemy za skorzystanie z programu !!! ---" << endl;
            cout << "-------------------------------------------------" << endl;
        }
        if( dzialanie > 5 || dzialanie <= 0 )
        do
        {
            {
                system( "cls" );
                cout << "-----------------" << endl;
                cout << "- Kalkulator ----" << endl;
                cout << "-----------------" << endl;
                cout << "-----------------" << endl << endl;
                cout << "-----------------" << endl;
                cout << "[1] Dodawanie ---" << endl;
                cout << "-----------------" << endl;
                cout << "[2] Odejmowanie -" << endl;
                cout << "-----------------" << endl;
                cout << "[3] Mnozenie ----" << endl;
                cout << "-----------------" << endl;
                cout << "[4] Dzielenie ---" << endl;
                cout << "-----------------" << endl;
                cout << "[5] Wyjscie -----" << endl;
                cout << "-----------------" << endl;
                cout << "-----------------" << endl << endl;
                cout << "--------------------------------------------------" << endl;
                cout << "Aby wybrac dzialanie wprowadz liczbe od 1 do 5 !!!" << endl;
                cout << "--------------------------------------------------" << endl << endl;
                cout << "Co chcesz wybrac? ";
                cin >> dzialanie;
                system( "cls" );
            }
           
        } while( dzialanie >= 5 || dzialanie <= 0 );
       
        switch( dzialanie )
        {
        case 1:
            system( "cls" );
            cout << "-------------------------" << endl;
            cout << "-- Wybrales dodawanie! --" << endl;
            cout << "-------------------------" << endl << endl;
            cout << "Wprowadz pierwsza liczbe: ";
            cin >> liczba1;
           
            if( liczba1 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "-------------------------" << endl;
                    cout << "-- Wybrales dodawanie! --" << endl;
                    cout << "-------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: ";
                    cin >> liczba1;
                }
               
            } while( liczba1 == 0 );
           
            cout << "Wprowadz druga liczbe: ";
            cin >> liczba2;
           
            if( liczba2 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "-------------------------" << endl;
                    cout << "-- Wybrales dodawanie! --" << endl;
                    cout << "-------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: " << liczba1 << endl;
                    cout << "Wprowadz druga liczbe: " << liczba2 << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz druga liczbe: ";
                    cin >> liczba2;
                }
               
            } while( liczba2 == 0 );
           
            system( "cls" );
            cout << "=======================" << endl;
            cout << "Obliczam: " << liczba1 << " + " << liczba2 << " = " << liczba1 + liczba2 << endl;
            cout << "=======================" << endl << endl;
            break;
        case 2:
            system( "cls" );
            cout << "---------------------------" << endl;
            cout << "-- Wybrales odejmowanie! --" << endl;
            cout << "---------------------------" << endl << endl;
            cout << "Wprowadz pierwsza liczbe: ";
            cin >> liczba1;
           
            if( liczba1 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "---------------------------" << endl;
                    cout << "-- Wybrales odejmowanie! --" << endl;
                    cout << "---------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: ";
                    cin >> liczba1;
                }
               
            } while( liczba1 == 0 );
           
            cout << "Wprowadz druga liczbe: ";
            cin >> liczba2;
           
            if( liczba2 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "---------------------------" << endl;
                    cout << "-- Wybrales odejmowanie! --" << endl;
                    cout << "---------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: " << liczba1 << endl;
                    cout << "Wprowadz druga liczbe: " << liczba2 << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz druga liczbe: ";
                    cin >> liczba2;
                }
               
            } while( liczba2 == 0 );
           
            system( "cls" );
            cout << "=======================" << endl;
            cout << "Obliczam: " << liczba1 << " - " << liczba2 << " = " << liczba1 - liczba2 << endl;
            cout << "=======================" << endl << endl;
            break;
        case 3:
            system( "cls" );
            cout << "------------------------" << endl;
            cout << "-- Wybrales mnozenie! --" << endl;
            cout << "------------------------" << endl << endl;
            cout << "Wprowadz pierwsza liczbe: ";
            cin >> liczba1;
           
            if( liczba1 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "------------------------" << endl;
                    cout << "-- Wybrales mnozenie! --" << endl;
                    cout << "------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: ";
                    cin >> liczba1;
                }
               
            } while( liczba1 == 0 );
           
            cout << "Wprowadz druga liczbe: ";
            cin >> liczba2;
           
            if( liczba2 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "------------------------" << endl;
                    cout << "-- Wybrales mnozenie! --" << endl;
                    cout << "------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: " << liczba1 << endl;
                    cout << "Wprowadz druga liczbe: " << liczba2 << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz druga liczbe: ";
                    cin >> liczba2;
                }
               
            } while( liczba2 == 0 );
           
            system( "cls" );
            cout << "=======================" << endl;
            cout << "Obliczam: " << liczba1 << " * " << liczba2 << " = " << liczba1 * liczba2 << endl;
            cout << "=======================" << endl << endl;
            break;
        case 4:
            system( "cls" );
            cout << "-------------------------" << endl;
            cout << "-- Wybrales dzielenie! --" << endl;
            cout << "-------------------------" << endl << endl;
            cout << "Wprowadz pierwsza liczbe: ";
            cin >> liczba1;
           
            if( liczba1 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "-------------------------" << endl;
                    cout << "-- Wybrales dzielenie! --" << endl;
                    cout << "-------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: ";
                    cin >> liczba1;
                }
               
            } while( liczba1 == 0 );
           
            cout << "Wprowadz druga liczbe: ";
            cin >> liczba2;
           
            if( liczba2 == 0 )
            do
            {
                {
                    system( "cls" );
                    cout << "-------------------------" << endl;
                    cout << "-- Wybrales dzielenie! --" << endl;
                    cout << "-------------------------" << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz pierwsza liczbe: " << liczba1 << endl;
                    cout << "Wprowadz druga liczbe: " << liczba2 << endl << endl;
                    cout << "---------------------------------------" << endl;
                    cout << "Wprowadzona liczba musi byc rozna od 0!" << endl;
                    cout << "---------------------------------------" << endl << endl;
                    cout << "Wprowadz druga liczbe: ";
                    cin >> liczba2;
                }
               
            } while( liczba2 == 0 );
           
            system( "cls" );
            cout << "=======================" << endl;
            cout << "Obliczam: " << liczba1 << " / " << liczba2 << " = " << liczba1 / liczba2 << endl;
            cout << "=======================" << endl << endl;
            break;
        }
    } while( dzialanie != 5 );
   
    return 0;
}
P-46850
AbillMara
Temat założony przez niniejszego użytkownika
» 2012-01-02 16:10:54
Naprawiłem program bo miał trochę bugów m.in. wprowadzanie błędnych liter / znaków.
Nie działające wyjście poprzez klawisz 5, gdy pierwszym ruchem w programie byłaby liczba <= 0 || > 5 || znak .
Oczywiście gdyby to 5 była pierwsza program ładnie zakończył by swoją pracę wyświetlając komunikat.

Druga sprawa to taka, że jak chciałem wyświetlić komunikat, w którym byłoby wypisane wprowadzenie błędnej litery czy znaku to pojawiało się tylko puste miejsce (na ten znak, literę), oczywiście! NIE zapomniałem o zmiennej do znaków i przypisaniu jej do strumienia wejściowego.
Próbowałem jeszcze wykorzystać do tego celu zmienną, która przechowuje .. tak liczby ;D , ale jak chyba wiadomo zamiast znaku był wypisany ciąg liczb 2293592.

Okey ..

Mój problem, w którym nie wiem jak mam przypisać wprowadzanie błędnych liter czy znaków do działań matematycznych, nie piszcie mi o czyszczeniu flag i buforu po wprowadzeniu liczb (bo to już zrobiłem). Jak wiadomo, może i nie .. gdy wpisze literę czy znak kiedy mnie pyta o liczbę to program nie stoi tylko idzie i zapisuje błędne dane po czym przypisuje im wartość zmiennej 2293592 dla liczby pierwszej, a dla drugiej 4280496.


Może problem nie jest taki duży i uciążliwy, ale jak Widać DOPIERO Się Uczę i każda wskazówka jest dla mnie cenna =)
Tak, tak .. czytałem już kurs z poziomu 1, nawet każdą lekcję 2-3x .

Wniosek jest taki, że jak coś robić to już porządnie !

Pozdrawiam.
P-47055
CodeMeister
» 2012-01-06 13:43:08
tak apro to znaki sa ASCII :)
P-47376
« 1 »
  Strona 1 z 1