Anonymní profil Kanax – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Kanax – Programujte.comAnonymní profil Kanax – Programujte.com

 

Příspěvky odeslané z IP adresy 88.81.95.–

Kanax
C / C++ › Postfixový kalkulátor
15. 11. 2010   #135924

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 :(

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý