Zdravím, byl bych rád, kdyby jste mi pomohli. Mám problém s postfixovým kalkulátorem, fungují mi funkce součet, rozdíl a součin. Funkce podíl mi nejde a nevím proč, modulo a další funkce jsem ještě neřešil. A ještě bych potřeboval převést zadané operandy na typ double pomocí funkce atof, aby kalkulátor uměl počítat i s čísly s plovoucí řádovou čárkou.
Kód programu:
#include <iostream>
#include <stdlib.h>
using namespace std;
class Zasobnik
{
private:
int StavZasobniku;
int* items;
int MaxVelikost;
public:
Zasobnik(int MaxVelikost);
int Vyjmout();
void Ulozit(int x);
};
Zasobnik::Zasobnik(int MaxVelikost)
{
this->MaxVelikost = MaxVelikost;
StavZasobniku = 0;
items = new int [MaxVelikost];
}
void Zasobnik::Ulozit(int x)
{
if (StavZasobniku == MaxVelikost - 1)
printf("Zasobnik je plny.");
else
{
items[StavZasobniku + 1] = x;
StavZasobniku++;
}
}
int Zasobnik::Vyjmout()
{
if (StavZasobniku == 0)
printf("Zasobnik je prazdny.");
else
{
StavZasobniku--;
return items[StavZasobniku + 1];
}
}
int main()
{
Zasobnik MujZasobnik(100);
cout << "Postfixovy kalkulator\n\n";
cout << "Zadejte priklad pro vypocet:";
char *token = NULL;
char input[100];
double atof(char *token);
gets(input);
token = strtok(input, " ");
while (token != NULL)
{
int a=0, b=0;
if (strcmp(token, "+") == 0)
{
a = MujZasobnik.Vyjmout(); b = MujZasobnik.Vyjmout();
MujZasobnik.Ulozit(a + b);
}
else if (strcmp(token, "-") == 0)
{
a = MujZasobnik.Vyjmout(); b = MujZasobnik.Vyjmout();
MujZasobnik.Ulozit(a - b);
}
else if (strcmp(token, "*") == 0)
{
a = MujZasobnik.Vyjmout(); b = MujZasobnik.Vyjmout();
MujZasobnik.Ulozit(a * b);
}
else if (strcmp(token, "/") == 0)
{
a = MujZasobnik.Vyjmout(); b = MujZasobnik.Vyjmout();
MujZasobnik.Ulozit(a / b);
}
else if (strcmp(token, "%") == 0)
{
a = MujZasobnik.Vyjmout(); b = MujZasobnik.Vyjmout();
MujZasobnik.Ulozit(a % b);
}
else
MujZasobnik.Ulozit(atoi(token));
token = strtok(NULL, " ");
}
cout << "Vysledek vaseho zapisu je: " << MujZasobnik.Vyjmout() << endl;
return 0;
}
Děkuji, za vaše rady a odpovědi. Budu Vám velice vděčný, jsem úplně v lese :(