Program prosty kalkulator z wyborem działania

2011-10-08 13:41
0

Witam!
Tworze sobie właśnie program podobny do kalkulatora.

Mam takie prowizoryczne menu:
1- aby dodać
2- aby odjąć
3- aby pomnożyć
4- aby podzielić
5- aby wyjść

(Menu oparte na ifie a nie na switchu)

Na samym początku napisałem sobie funkcje dodawania , odejmowania, dzielenia i mnożenia.

Chce ,żeby po kliknięciu np klawisza 1 pobrał dane od użytkownika z klawiatury:

cin >> liczba1
cin >> liczba2 itd

I potem wyświetlił wynik wybranego działania:)

Ale coś tu chyba namieszałem bo jak wybieram opcje np, dodawania to wpierw wyswietla mi wyniku a pozniej dopiero chce pobrać jakiekolwiek wartości zmiennych od użytkownika ;/

Proszę o pomoc!


#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <conio.h>
#include <stdlib.h>

using namespace std;

void Dodawanie(int nWartosc1, int nWartosc2)
{
    int nWynik = nWartosc1 + nWartosc2;
    cout << "Wynikiem dodawania liczb " << nWartosc1 << " + " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

void Odejmowanie(int nWartosc1, int nWartosc2)
{
    int nWynik = nWartosc1 - nWartosc2;
    cout << "Wynikiem odejmowania liczb " << nWartosc1 << " - " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

void Mnozenie(int nWartosc1, int nWartosc2)
{
    int nWynik = (nWartosc1 * nWartosc2);
    cout << "Wynikiem mnozenia liczb " << nWartosc1 << " * " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

void Dzielenie(int nWartosc1, int nWartosc2)
{
    int nWynik = (nWartosc1 / nWartosc2);
    cout << "Wynikiem dzielenia liczb " << nWartosc1 << " / " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

int main()
{
    cout << "-------------------------------------" << endl;
    cout << "  Witamy w konsolowym kalkulatorze  " << endl;
    cout << "-------------------------------------" << endl;
    cout << "     1   -   aby dodac"<< endl;
    cout << "     2   -   aby odjac"<< endl;
    cout << "     3   -   aby pomnozyc"<< endl;
    cout << "     4   -   aby podzielic"<< endl;
    cout << "     5   -   aby wyjsc"<< endl;
    cout << "-------------------------------------" << endl << endl;

    cout << "   Co chcesz zrobic?" << endl << endl;

    int wybor;
    int nLiczba1, nLiczba2;

    cin >> wybor;

    if(wybor==1)
    {
        system("cls");
        cout << "Wybrales dodawanie!" << endl << endl;
        Dodawanie(nLiczba1, nLiczba2);
        };
        if(wybor==2)
        {
            system("cls");
            cout << "Wybrales odejmowanie!" << endl << endl;
            Odejmowanie(nLiczba1, nLiczba2);
                };
                if(wybor==3)
                {
                    system("cls");
                    cout << "Wybrales mnozenie!" << endl << endl;
                    Mnozenie(nLiczba1, nLiczba2);
                    };
                    if(wybor==4)
                    {
                        system("cls");
                        cout << "Wybrales dzielenie!" << endl << endl;
                        Dzielenie(nLiczba1, nLiczba2);
                        };
                        if(wybor==5)
                        {
                            exit(1);
                            };

    cout << "Podaj 1 liczbe: " << endl;
    cin >> nLiczba1;

    cout << "Podaj 2 liczbe: " << endl;
    cin >> nLiczba2;

system("PAUSE");
return 0;
}

Pozdrawiam forumowiczów :)


edytowany 1x, ostatnio: madmike, 2011-10-08 14:23

Pozostało 580 znaków

2011-10-08 13:47
allocer
0

No pomyśl logicznie. Kiedy podajesz swoje liczby, a kiedy wybierasz opcje działania? Jak widać najpierw musisz wybrać opcję, jak wybierzesz opcje wyświetla się wynik. Dopiero potem podajesz liczby. Czy tak ma być? Możesz zrobić to na dwa sposoby:

  1. Wczytujesz swoje dwie liczby, po czym wybierasz opcje i dane działanie wykonuje się tak, jak chcesz.
  2. Możesz umieścić "podawanie" liczb w danym warunku. Tj. wybieram sobie opcje pierwszą po czym podaje swoje liczby i wykonuje działanie.

Pozostało 580 znaków

2011-10-08 14:01
0

No właśnie chce tę drugą opcje zrobić:

Wpierw wybieram z menu odpowiednie działanie -> później pobieram liczby z klawiatury -> i na samym dole wyświetlam wynik

Co tu mam źle?


Pozostało 580 znaków

2011-10-08 14:05
allocer
0

Nie, Ty najpierw wybierasz działanie i od razu wyświetlasz wynik. Dopiero potem podajesz liczby. Spróbuj tak:

int liczba1, liczba2;
if(wybor==1)
        {
               cin>>liczba1>>liczba2;
                cout << "Wybrales dodawanie!" << endl << endl;
                Dodawanie(liczba1, liczba2);
                };

Tutaj znacznie wygodniej użyć switch i case, dla czytelności kodu i mniejszego prawdopodobieństwa popełnienia błędu.

Pozostało 580 znaków

2011-10-08 14:06
0

Mam :D faktycznie wystarczało ruszyć trochę głową xd

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <conio.h>
#include <stdlib.h>

using namespace std;

void Dodawanie(int nWartosc1, int nWartosc2)
{
    int nWynik = nWartosc1 + nWartosc2;
    //cout << "Wynikiem dodawania liczb " << nWartosc1 << " + " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

void Odejmowanie(int nWartosc1, int nWartosc2)
{
    int nWynik = nWartosc1 - nWartosc2;
    //cout << "Wynikiem odejmowania liczb " << nWartosc1 << " - " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

void Mnozenie(int nWartosc1, int nWartosc2)
{
    int nWynik = (nWartosc1 * nWartosc2);
    //cout << "Wynikiem mnozenia liczb " << nWartosc1 << " * " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

void Dzielenie(int nWartosc1, int nWartosc2)
{
    int nWynik = (nWartosc1 / nWartosc2);
    //cout << "Wynikiem dzielenia liczb " << nWartosc1 << " / " << nWartosc2 << " = " << nWynik;
    cout << endl;

}

int main()
{
    cout << "-------------------------------------" << endl;
    cout << "  Witamy w konsolowym kalkulatorze  " << endl;
    cout << "-------------------------------------" << endl;
    cout << "     1   -   aby dodac"<< endl;
    cout << "     2   -   aby odjac"<< endl;
    cout << "     3   -   aby pomnozyc"<< endl;
    cout << "     4   -   aby podzielic"<< endl;
    cout << "     5   -   aby wyjsc"<< endl;
    cout << "-------------------------------------" << endl << endl;

    cout << "   Co chcesz zrobic?" << endl << endl;

    int wybor;
    int nLiczba1, nLiczba2, nWynik;

    cin >> wybor;

    if(wybor==1)
    {
        system("cls");
        cout << "Wybrales dodawanie!" << endl << endl;
        Dodawanie(nLiczba1, nLiczba2);
        };
        if(wybor==2)
        {
            system("cls");
            cout << "Wybrales odejmowanie!" << endl << endl;
            Odejmowanie(nLiczba1, nLiczba2);
                };
                if(wybor==3)
                {
                    system("cls");
                    cout << "Wybrales mnozenie!" << endl << endl;
                    Mnozenie(nLiczba1, nLiczba2);
                    };
                    if(wybor==4)
                    {
                        system("cls");
                        cout << "Wybrales dzielenie!" << endl << endl;
                        Dzielenie(nLiczba1, nLiczba2);
                        };
                        if(wybor==5)
                        {
                            exit(1);
                            };

    cout << "Podaj 1 liczbe: " << endl;
    cin >> nLiczba1;

    cout << "Podaj 2 liczbe: " << endl;
    cin >> nLiczba2;

    cout << nWynik;

system("PAUSE");
return 0;
}

edytowany 2x, ostatnio: madmike, 2011-10-08 14:23

Pozostało 580 znaków

2011-10-08 14:47
0

Jednak coś wciąż jest nie tak ;/

Po wykonaniu np. dodawania 2 + 4 wynik wyświetla mi liczbe 574574567 :o

co tu mam wciąż namieszane? Proszę o pomoc


Pozostało 580 znaków

2011-10-08 15:00
allocer
0

A próbowałeś, jak Ci napisałem? To spróbuj, a nie gadaj.

Pozostało 580 znaków

2011-10-15 19:23
0

lepiej użyj instrukcji switch niż if i po problemie

Pozostało 580 znaków

2011-10-15 19:25
0

albo nie zagnieżdżaj ifów

Pozostało 580 znaków

2011-10-15 19:28
0

od kiedy ifa kończy się średnikiem?


Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)

Pozostało 580 znaków

2011-10-15 19:31
0

spróbuj bez średnika po nawiasie
if (warunek)
{
instrukcja_1;

}

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0