Prosty kalkulator - co mogę poprawić, aby był lepszy?

Prosty kalkulator - co mogę poprawić, aby był lepszy?
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
 #include <iostream>
#include <windows.h>

using namespace std;

float dodawanie(float a, float b)
{
    return a + b;
}

float odejmowanie(float a, float b)
{
    return a - b;
}

float mnozenie(float a, float b)
{
    return a * b;
}

float dzielenie(float a, float b)
{
    return (a/b);
}
int main()
{
    int wybor;
    float pierwsza, druga;

    while(wybor != 9)
    {
        cout << "Podaj pierwsza liczbe:";
        cin >> pierwsza;

        cout << "Podaj druga liczbe:";
        cin >> druga;

        cout << "Wybierz jedna z opcji:\n"
                "1.Dodawanie\n"
                "2.Odejmowanie\n"
                "3.Mnozenie\n"
                "4.Dzielenie\n";
                "9.Wyjscie\n";

        cout << "Podaj swoj wybor: ";
        cin >> wybor;

        switch(wybor)
        {
        case 1:
            cout << "Wynik dodawania tych dwoch liczb to: " << dodawanie(pierwsza,druga) << endl;
            break;

        case 2:
            cout << "Wynik odejmowania tych dwoch liczb to: " << odejmowanie(pierwsza,druga) << endl;
            break;

        case 3:
            cout << "Wynik mnozenie tych dwoch liczb to: " << mnozenie(pierwsza,druga) << endl;
            break;

        case 4:
            if(druga == 0) cout << "Nie mozna dzielic prez zero !!!\n";
            else
            cout << "Wynik dzielenia tych dwoch liczb to: " << dzielenie(pierwsza,druga) << endl;
            break;
        }
        Sleep(2000);
        system("cls");
    }

    return 0;
}

Co tu mogę poprawić aby był lepszy ? Dlaczego w menu nie wyświetla 9 opcji na ekranie ?

  • Rejestracja: dni
  • Ostatnio: dni
0

Trochę zmieniłem kod:

Kopiuj
#include <iostream>
#include <windows.h>

using namespace std;

float dodawanie(float a, float b)
{
    return a + b;
}

float odejmowanie(float a, float b)
{
    return a - b;
}

float mnozenie(float a, float b)
{
    return a * b;
}

float dzielenie(float a, float b)
{
    return (a/b);
}
int main()
{
    int wybor;
    float pierwsza, druga;

    while(true)
    {
        cout << "Wybierz jedna z opcji:\n"
                "1.Dodawanie\n"
                "2.Odejmowanie\n"
                "3.Mnozenie\n"
                "4.Dzielenie\n";
                "9.Wyjscie\n";

        cout << "Podaj swoj wybor: ";
        cin >> wybor;

        if(wybor == 9) break;
        
        cout << "Podaj pierwsza liczbe:";
        cin >> pierwsza;

        cout << "Podaj druga liczbe:";
        cin >> druga;

        switch(wybor)
        {
        case 1:
            cout << "Wynik dodawania tych dwoch liczb to: " << dodawanie(pierwsza,druga) << endl;
            break;

        case 2:
            cout << "Wynik odejmowania tych dwoch liczb to: " << odejmowanie(pierwsza,druga) << endl;
            break;

        case 3:
            cout << "Wynik mnozenie tych dwoch liczb to: " << mnozenie(pierwsza,druga) << endl;
            break;

        case 4:
            if(druga == 0) cout << "Nie mozna dzielic prez zero !!!\n";
            else
            cout << "Wynik dzielenia tych dwoch liczb to: " << dzielenie(pierwsza,druga) << endl;
            break;

        default:
            cout << "Nie ma takiej opcji\n";
            break;
        }
        Sleep(2000);
        system("cls");
    }

    return 0;
}
 
PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Pomorskie (Stare Kabaty)
0

Może dodaj obsługe błędnie wprowadzonej opcji?

  • Rejestracja: dni
  • Ostatnio: dni
0

A co tutaj mam błędnego ?

  • Rejestracja: dni
  • Ostatnio: dni
0

to mam zastosować wyjątki ?

grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
0

Właściwie to nie musisz nawet definiować tych funkcji działań. Wystarczy po prostu w cout przekazać wyrażanie np: cout << a + b << endl; Albo jakąś lambdę zrobić. Jeżeli już chcesz wykorzystać te funkcje to zrób je np jako inline.

  • Rejestracja: dni
  • Ostatnio: dni
0

a jak to sprawdzać czy nie został inny typ niż liczbowy ?

grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
  • Rejestracja: dni
  • Ostatnio: dni
0

dla float to zadziała ?

grzesiek51114
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2442
0

Dodaj #include<locale> i zastosuj funkcję std::isdigit(wybor, std::locale::global(std::locale("")) To się nie wywali. :)

CeKa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 204
0

Nie wyświetla 9, ponieważ

Kopiuj
cout << "Wybierz jedna z opcji:\n"
                "1.Dodawanie\n"
                "2.Odejmowanie\n"
                "3.Mnozenie\n"
                "4.Dzielenie\n";
                "9.Wyjscie\n";

Masz średnik w przed ostatniej linijce.

kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1403
0

Po wypisaniu 4 opcji masz srednik, dlatego 9 Ci nie wypisuje

  • Rejestracja: dni
  • Ostatnio: dni
0

Ok, ale jak sprawdzić czy liczby są typu float ?

CeKa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
  • Postów: 204
0
Kopiuj
#include <string>
#include <sstream>

bool isFloat( string myString ) {
    std::istringstream iss(myString);
    float f;
    iss >> noskipws >> f; // noskipws considers leading whitespace invalid
    // Check the entire string was consumed and if either failbit or badbit is set
    return iss.eof() && !iss.fail(); 
}
kaczus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Łódź
  • Postów: 1403
0

kurs średni, ale opisane na przykładzie: http://qvazar.pl/kurs-cpp/obsluga-bledow-cin/metody-clear-good-fail

  • Rejestracja: dni
  • Ostatnio: dni
0

kaczus, ale to chyba tylko dla intow dziala ? To co wysłałeś.

Craith
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 146
0

za bardzo sie nie znam ale liczby zmiennoprzecinkowe zapisuje sie z . (kropka) a nie przecinkiem. sprobuj czy metody-clear-good-fail dziala dla floatow. nic nie zaszkodzi

  • Rejestracja: dni
  • Ostatnio: dni
0

Sprawdzanie float:

http://stackoverflow.com/questions/447206/c-isfloat-function

Żeby ulepszyć ten program, możesz zrobić okienkowy kalkulator taki jak w windowsie :P

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.