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

lekcja 17 - kalkulator.

Ostatnio zmodyfikowano 2012-09-11 08:14
Autor Wiadomość
kolomir
Temat założony przez niniejszego użytkownika
lekcja 17 - kalkulator.
» 2012-09-10 23:08:32
Witam.
W sumie od kilku dni zmagam się z C++. Napisałem mały programik - kalkulator - który działa (wydaje mi się że poprawnie) ale mam 2 małe pytanka:

1. Czy czasem nie poniosło mnie z kodem? Jakoś tak myślę że jest trochę obszerny.

C/C++
#include <iostream>
#include <limits>

void moje_menu()
{
   
    std::cout << "\n**************************\n";
    std::cout << "Wybierz dzialanie: \n";
    std::cout << " [1] dodawanie\n";
    std::cout << " [2] odejmowanie\n";
    std::cout << " [3] mnożenie\n";
    std::cout << " [4] dzielenie\n\n";
    std::cout << " [0] koniec\n";
}

bool sprawdzenie( int a )
{
    bool Sukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    return Sukces;
}

int liczba()
{
    int zmienna;
    std::cin >> zmienna;
    return zmienna;
}

int main()
{
    int koniec;
    int skok;
    int liczba_x;
    int liczba_a;
    int liczba_b;
    int wynik;
    koniec = 0;
   
    do
    {
        moje_menu();
        std::cin >> skok;
       
        if( sprawdzenie( skok ) )
        {
            if( skok > 0 )
            {
               
                std::cout << "\n\n**********************************\n\n";
                std::cout << "Podaj pierwsza liczbe: ";
                liczba_a = liczba();
               
                std::cout << "\n\n**********************************\n\n";
                std::cout << "Podaj druga liczbe: ";
                liczba_b = liczba();
               
                if( sprawdzenie( liczba_a ) && sprawdzenie( liczba_b ) )
                {
                   
                    switch( skok )
                    {
                    case 1:
                        wynik = liczba_a + liczba_b;
                        std::cout << "\n************************************************" << std::endl;
                        std::cout << "Wynik dodawania liczb: " << liczba_a << " + " << liczba_b << " = " << wynik << std::endl;
                        std::cout << "************************************************" << std::endl;
                       
                        koniec = 1;
                        break;
                    case 2:
                        wynik = liczba_a - liczba_b;
                        std::cout << "\n************************************************" << std::endl;
                        std::cout << "Wynik odejmowania liczb: " << liczba_a << " - " << liczba_b << " = " << wynik << std::endl;
                        std::cout << "************************************************" << std::endl;
                       
                        koniec = 1;
                        break;
                    case 3:
                        wynik = liczba_a * liczba_b;
                        std::cout << "\n************************************************" << std::endl;
                        std::cout << "Wynik mnozenia liczb: " << liczba_a << " * " << liczba_b << " = " << wynik << std::endl;
                        std::cout << "************************************************" << std::endl;
                       
                        koniec = 1;
                        break;
                    case 4:
                        wynik = liczba_a / liczba_b;
                        std::cout << "\n************************************************" << std::endl;
                        std::cout << "Wynik dzielenia liczb: " << liczba_a << " / " << liczba_b << " = " << wynik << std::endl;
                        std::cout << "************************************************" << std::endl;
                       
                        koniec = 1;
                        break;
                    default:
                        std::cout << "\n************************************************" << std::endl;
                        std::cout << "Chyba dokonales zlego wyboru dzialania " << std::endl;
                        std::cout << "************************************************" << std::endl;
                       
                        koniec = 1;
                        break;
                    }
                }
                else
                {
                    std::cout << "\n******************************" << std::endl;
                    std::cout << "*  Musisz podać dwie liczby  *" << std::endl;
                    std::cout << "******************************" << std::endl;
                    koniec = 1;
                }
               
            }
            else
            {
                koniec = 0;
            }
        }
        else
        {
            std::cout << "\n****************************************" << std::endl;
            std::cout << "*  Poprawne sa tylko liczby            *" << std::endl;
            std::cout << "****************************************" << std::endl;
            koniec = 1;
        }
       
    } while( koniec != 0 );
   
    std::cout << "\n*********************" << std::endl;
    std::cout << "*  Koniec programu  *" << std::endl;
    std::cout << "*********************" << std::endl;
    return 0;
}

2. Nie wiem dlaczego po podaniu 2 liczny muszę wcisnąć 2x enter. Oczywiście wszystko działa ale myślę że powinno zadziałać po jednokrotnym wciśnięciu entera.

PS. Jeden z fajniejszych kursów jakie widziałem... Gratulacje.
P-64776
kubawal
» 2012-09-11 08:14:24
1. Kod daj w [cpp]...[/cpp] i przeczytaj sobie » KursyKurs STC kurs
2. Czy kod obszerny? Jeśli zdaje ci się, że masz za dużo kodu w jednym pliku, podziel sobie program
na pliki main.cpp i funkcje.cpp. Nie zapomnij umieścić deklaracji funkcji w jakimś nagłówku, którego dołączasz do obu plików.
Wiedz, że wszystkie profesjonalne programy składają się z wielu plików i bibliotek
3.
C/C++
bool sprawdzenie( int a )
{
    bool Sukces = std::cin.good();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    return Sukces;
}
 
Po co ci argument a, jak i tak go nie używasz?
P-64784
« 1 »
  Strona 1 z 1