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

Kalkulator

Ostatnio zmodyfikowano 2016-03-25 22:30
Autor Wiadomość
Mal3c
Temat założony przez niniejszego użytkownika
Kalkulator
» 2016-03-25 22:08:33
Jestem nowy w te klocki, uczę się z tutoriali na tej stronie i jestem na drugim poziomie. Robiłem zadania itd, udawało się, ale stwierdziłem że napiszę jeden kalkulator sam.. ( nie z ' pracy domowej ).. no i napisałem.. ale natknąłem się na pewne problemy.
1. gdy zamiast liczby wpiszę coś innego - raz wyskoczy napis i będzie chciał żebym wpisał jeszcze raz, ale gdy drugi raz wpiszę coś innego - będzie spam napisem " nie ma takiej opcji " ( ten problem pewnie rozwiążę zanim ktoś odpowie bo już nie raz mi się to udało )
@edit.. okej.. jednak nie mam pomysłu jak to naprawić, bo próby kończą się wchodzeniem z deszczu pod rynne...
2. Nie liczy... :c ( i nie wiem co mam źle... :/ )

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

int wybierzdzialanie()
{
    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] - Rezygnuj " << std::endl;
}
int wczytanieliczby()
{
    int kolejnaliczba;
    int ile = 5;
    do
    {
        std::cout << "Wybierz co chcesz zrobic " << std::endl;
        std::cout << " [1] - liczba " << std::endl;
        std::cout << " [2] - Rezygnacja " << std::endl;
        std::cin >> kolejnaliczba;
        if( std::cin.fail() || kolejnaliczba > 2 || kolejnaliczba < 1 )
        {
            std::cout << " Nie ma takiej opcji ! " << std::endl;
            std::cin >> kolejnaliczba;
            ile--;
        }
    } while( kolejnaliczba > 2 || kolejnaliczba < 0 );
   
    switch( kolejnaliczba )
    {
    case 1:
        std::cout << " Wprowadz liczbe " << std::endl;
        int a;
        do
        {
            std::cin.clear();
            std::cin.sync();
            std::cin >> a;
            if( a == false )
            {
                std::cout << " Podaj liczbe ! " << std::endl;
            }
        } while( !a == true );
       
        return a;
        break;
       
    case 2:
        std::cout << " Zrezygnowales " << std::endl;
        return 0;
        break;
    }
   
   
}
int wczytaniedrugiejliczby()
{
    int kolejnaliczba;
    int ile = 5;
    do
    {
       
        std::cout << "Wybierz co chcesz zrobic " << std::endl;
        std::cout << " [1] - liczba " << std::endl;
        std::cout << " [2] - Rezygnacja " << std::endl;
        std::cin >> kolejnaliczba;
        if( std::cin.fail() || kolejnaliczba > 2 || kolejnaliczba < 0 )
        {
            std::cout << " Nie ma takiej opcji ! " << std::endl;
            std::cin >> kolejnaliczba;
            ile--;
        }
    } while( kolejnaliczba > 2 || kolejnaliczba < 0 );
   
    switch( kolejnaliczba )
    {
    case 1:
       
        std::cout << " Wprowadz liczbe " << std::endl;
        int b;
        do
        {
            std::cin.clear();
            std::cin.sync();
            std::cin >> b;
            if( b == false )
            {
                std::cout << " Podaj liczbe ! " << std::endl;
            }
        } while( !b == true );
       
        return b;
        break;
       
    case 2:
        std::cout << " Zrezygnowales " << std::endl;
        return 0;
        break;
    }
   
}

int main()
{
    std::cout << " Witaj w kalkulatorze v3 " << std::endl;
    int a = wczytanieliczby();
    int b = wczytaniedrugiejliczby();
    wybierzdzialanie();
    int dzialanie;
   
    do
    {
        std::cin >> dzialanie;
        if( std::cin.fail() || dzialanie > 5 || dzialanie < 1 )
        {
            std::cout << " Nie ma takiej opcji " << std::endl;
            std::cin >> dzialanie;
        }
    } while( dzialanie < 5 || dzialanie > 1 );
   
    switch( dzialanie )
    {
    case 1:
        std::cout << "Dodawanie: " << a << " + " << b << " = " << a + b << std::endl;
        break;
       
    case 2:
        std::cout << "Odejmowanie: " << a << " - " << b << " = " << a - b << std::endl;
        break;
       
    case 3:
        std::cout << "Mnozenie: " << a << " * " << b << " = " << a * b << std::endl;
        break;
       
    case 4:
        std::cout << "Dzielenie: " << a << " / " << b << " = " << a / b << std::endl;
        break;
       
    case 5:
        std::cout << " Zrezygnowales " << std::endl;
        return 0;
        break;
    }
    return 0;
}

P-146561
mateczek
» 2016-03-25 22:30:43
nie wyczyściłeś strumienia cin po błędnych danych!!!
pozatym zobacz taki kalkulator

C/C++
#include <iostream>
using namespace std;

int main() {
    cout << "podaj dzialanie w formie: " << endl << "liczba znak(+-*) liczba " << endl;
    int a, b;
    char znak;
    while( !( cin >> a >> znak >> b ) ) {
        // wczytanie się nie powiodło czyszczenie strumienia!!!!   
        cin.clear();
        cin.sync();
        // prosimy o ponowne podanie poprawngeo działania 
        cout << "zle dzialanie podaj jeszcze raz" << endl;
       
    }
   
    if( znak == '+' ) {
        cout << " = " << a + b << endl;
    }
    if( znak == '-' ) {
        cout << " = " << a - b << endl;
    }
    if( znak == '*' ) {
        cout << " = " << a * b << endl;
    }
}
P-146562
« 1 »
  Strona 1 z 1