Problem z funkcją w kalkulatorze

0

Mam taki problem i nie wiem jak to rozwiązać:

double kalkulator( char znak, double x, double y)
{
    cout << x << znak << y << " = " << x 'znak' y;
}

Chciałabym, żeby zwracało np : "3 + 4 = 7", albo sam wynik. Użytkownik ma wprowadzić dwie liczby i znak, znak powinien dodawać, odejmować, mnożyć lub dzielić te dwie liczby.
Cały kod:

#include <iostream>

using namespace std;

double kalkulator( char znak, double x, double y );

int main()
{
    double x;
    double y;
    char znak;

    cout << " =====================\n";
    cout << "  K A L K U L A T O R \n";
    cout << " =====================\n\n\n";

    cout << " Podaj dwie liczby: \n\n";
    cout << " Pierwsza liczba: ";
    cin >> x;
    cout << " Druga liczba: ";
    cin >> y;
    cout << endl;

    cout << " Podaj operator arytmetyczny (+, -, *, /): " ;
    cin >> znak;

    if( znak == '+')
    {
        kalkulator( znak, x, y );
    }

    cin. sync();
    cin.get();
    return 0;       
}
double kalkulator( char znak, double x, double y)
{
    cout << x << znak << y << " = " << x 'znak' y;
}

Tak dokładniej nie cały, bo sprawdzałam czy zadziała i jest niedokończony :D.

0

Zrob switch/case i w zaleznosci od znaku wykonuj opdpowiednia instrukcje

0

robisz funkcję, która może coś zwracać, ale nie zwraca :D zrób sobie w tej funkcji zmienną pomocniczą, która sumuje liczby i zwraca tą sumę. Potem wystarczy, że wypiszesz.
ew. robisz voida, który wykonuje całą robotę: przekazujesz liczby i znak, obliczasz, wypisujesz. Ps. chara wypisujesz wywołując normalnie zmienną, nie w ciapkach.

2

Tak jak powyżej, Przemyśl design tej funkcji(Twoja nic nie zwracała, brak return, polecam jakiś tutorial z podstaw c++, btw), i Spróbuj coś w tym stylu (plus default, jakiś wyjątek, czy coś):

double calculator(char sign, double x, double y)
{
    switch(sign)
    { case '+':
        return x + y;
        break;
      case '-':
        return x - y;
        break;
    }
}

std::cout <<calculator('+', 41.0, 1.0); // -> 42
0

Zawsze można skorzystać z gotowców w rodzaju https://github.com/codeplea/tinyexpr, choć zdaję sobie sprawę z tego, że to nie jest meritum zadania.

Przykład z ich autorskiego Git'a:

#include "tinyexpr.h"
#include <stdio.h>

int main(int argc, char *argv[])
{
    const char *c = "sqrt(5^2+7^2+11^2+(8-2)^2)";
    double r = te_interp(c, 0);
    printf("The expression:\n\t%s\nevaluates to:\n\t%f\n", c, r);
    return 0;
}

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