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

Lekcja 15 zadanie domowe - sugestie

Ostatnio zmodyfikowano 2012-06-21 19:46
Autor Wiadomość
Neadriel
Temat założony przez niniejszego użytkownika
Lekcja 15 zadanie domowe - sugestie
» 2012-06-20 12:51:48
Witam, zrobiłem ten kalkulatorek i zastanawiam się czy nie nadprodukowałem trochę niepotrzebnego kodu albo czy coś da się zrobić inaczej... z góry dzięki za wszelkie uwagi.

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.
C/C++
#include <iostream>
int main()
{
    float wynik = 0;
    float a;
    int rodz;
    bool s1;
    bool s2;
    bool s3;
    std::cout << "============witam w moim kalkulatorze=====================\n\n";
   
    std::cout << "Start: " << wynik << std::endl;
   
    do
    {
        std::cin.clear();
        std::cin.sync();
        std::cout << "\nWprowadz liczbe poczatkowa: ";
        std::cin >> wynik;
        std::cout << std::endl;
        s1 = std::cin.good();
       
        if( s1 == false )
             std::cout << "Nie podales liczby\n";
       
    } while( s1 == false );
   
    do
    {
        do
        {
            std::cout << "\nWybierz rodzaj dzialania: " << std::endl;
            std::cout << "1. Dodawanie" << std::endl;
            std::cout << "2. Odejmowanie" << std::endl;
            std::cout << "3. Mnozenie" << std::endl;
            std::cout << "4. Dzielenie" << std::endl;
            std::cout << "5. Zakoncz\n" << std::endl;
            std::cout << "Twoj wybor to:";
            std::cin.clear();
            std::cin.sync();
            std::cin >> rodz;
            s3 = std::cin.good();
           
            if( s3 == false )
                 std::cout << "Nie podales prawidlowej liczby\n";
           
        } while( s3 == false );
       
        if( rodz != 5 )
        {
            do
            {
                std::cin.clear();
                std::cin.sync();
                std::cout << "\n\nPodaj liczbe kolejna: ";
                std::cin >> a;
                std::cout << std::endl;
                s2 = std::cin.good();
               
                if( s2 == false )
                     std::cout << "Nie podales prawidlowej liczby\n";
               
            } while( s2 == false );
           
            switch( rodz )
            {
            case 1:
                std::cout << "\n=================nWynik = " <<( wynik += a ) << "\n=================" << std::endl;
                break;
               
            case 2:
                std::cout << "\n=================\nWynik = " <<( wynik -= a ) << "\n=================" << std::endl;
                break;
               
            case 3:
                std::cout << "\n=================\nWynik = " <<( wynik *= a ) << "\n=================" << std::endl;
                break;
               
            case 4:
                if( a == 0 )
               
                     std::cout << "\nTylko chuck Norris moze dzielic przez 0!" << std::endl;
                else
               
                     std::cout << "\n=================\nWynik = " <<( wynik /= a ) << "\n=================" << std::endl;
               
                break;
               
                default:
                std::cout << "\nNie wybrales zadnego z powyzszych dzialan" << std::endl;
                break;
            }
        }
        else
             std::cout << "\n\nNarka!\n";
       
    } while( rodz != 5 );
   
    return 0;
}
 
P-58746
Rafals
» 2012-06-21 19:46:50
Witam.
Jedyne jak Ci mogę pomóc to pokazać jak sam to rozwiązałem. Też dopiero co zacząłem swoją przygodę z C++.
C/C++
#include <iostream>

int main()
{
    float a, b, dodaj, odejmij, pomnoz, podziel, wynik;
    int dzialanie;
   
    do
    {
        std::cout << "Podaj pierwsza liczbe: ";
        std::cin.clear();
        std::cin.sync();
        std::cin >> a;
        bool A = std::cin.good();
       
        std::cout << "Podaj druga liczbe: ";
        std::cin.clear();
        std::cin.sync();
        std::cin >> b;
        bool B = std::cin.good();
       
        if( A == true && B == true )
        {
            do
            {
                std::cout << "\nWybierz dzialanie arytmetyczne:\n" << "[1] Dodawanie\n" << "[2] Odejmowanie\n" << "[3] Mnozenie\n" << "[4] Dzielenie\n" << "[0] Wyjscie\n";
                std::cin.clear();
                std::cin.sync();
                std::cin >> dzialanie;
               
                switch( dzialanie )
                {
                case 1:
                    {
                        wynik = a + b;
                        std::cout << "\na + b = " << wynik << std::endl;
                        break;
                    }
                case 2:
                    {
                        wynik = a - b;
                        std::cout << "\na - b = " << wynik << std::endl;
                        break;
                    }
                case 3:
                    {
                        wynik = a * b;
                        std::cout << "\na * b = " << wynik << std::endl;
                        break;
                    }
                case 4:
                    {
                        if( b == 0 )
                        {
                            std::cout << "\nNie dzielimy przez zero." << std::endl;
                            break;
                        }
                        else
                        {
                            wynik = a / b;
                            std::cout << "\na / b = " << wynik << std::endl;
                            break;
                        }
                    }
                    default:
                    if( dzialanie == 0 )
                         break;
                    else
                         std::cout << "Wybrano niepoprawna opcje!";
                   
                }
            } while(( dzialanie > 4 ) ||( dzialanie < 0 ) );
           
        }
        else
        {
            dzialanie = 1;
            std::cout << "'a' lub 'b' nie jest liczba\n";
        }
    } while( dzialanie != 0 );
   
    std::cout << "Kalkulator zakonczyl prace";
    return 0;
}
P-58854
« 1 »
  Strona 1 z 1