Ahojte . dostal som zadanu ulohu naprogramovat postfixovu kalkulacku..(to by aj bolo)
no problem je v tom,ze postup(nasobenia,delenia atd..) a aj vystup ma byt v HTMLku cize v nejakom index.html,no len neviem vobec ako nato.
tu je moj kod.
Kód:
#include "stdafx.h"
#include<iostream>
#include<cstdlib>
#include<math.h>
#include<string.h>
#include<stdio.h>
#include <fstream>
/**
* @brief Program vypočíta zadaný postfixový zápis.
* Program Postfixový kalkulátor je program, ktorý zo zadaného postfixového zápisu vypočíta výsledok.
*/
char a=160, u=163, e=130, c=159, s=231, o=236, z=167, y=236, i=161, p=147;
using namespace std;
/**
* STACKSIZE reprezentuje velkosť poľa zásobníku.
*/
const int STACKSIZE=100000;
/**
* ITEMS je pole zásobníku.
*/
double ITEMS[STACKSIZE];
/**
* TOP reprezentuje aktuálnu pozíciu zásobníku.
*/
int TOP=0;
/**
* Funkcia Push zapisuje čísla do zásobníku.
* @param x je hodnota typu <b>double</b> ktorá má byť zapísaná do zásobníku
*/
void Push(double x)
{
if(TOP == STACKSIZE-1)
{
cout << "CHYBA: Prete"<<c<<"enie z"<<a<<"sobn"<<i<<"ku!\n" << endl;
system("PAUSE");
exit(EXIT_FAILURE);
}
else
ITEMS[++TOP] = x;
return;
}
/**
* Funkcia Pop je funkcia, pomocou ktorej vyťahujeme čísla zo zásobníku. Pokial by bol zásobník prázdny, funkcia vypíše chybové hlásenie.
* @return funkcia vracia hodnotu typu <b>double</b> z aktualnej pozície zásobníku.
*/
double Pop(void)
{
if(TOP==0)
{
cout << "\nCHYBA: Podte"<<c<<"enie z"<<a<<"sobn"<<i<<"ku!\n" << endl;
system("PAUSE");
exit(EXIT_FAILURE);
}
else
return(ITEMS[(TOP)--]);
}
/** Funkcia PostCalc vypočíta zadaný postfixový zápis. Ak je zápis v nesprávnom tvare funkcia vypíše chybové hlásenie.
* @param in je vstupný reťazec v postfixovom zápise ktorý funkcia vypočíta.
* @return Funkcia vracia hodnotu typu <b>double</b> to je výsledok zadaného postfixového zápisu.
*/
double PostCalc(char in[100])
{
/**
* Premenné a, b sú pomocné premenné použité pri výpočtoch.
*/
double a,b;
/**
* Premmenná element je premenná obsahujúca aktuálne spracúvajúci sa prvok zadaného postfixového zápisu.
*/
char *element;
element = strtok(in, " ");
while(element != NULL)
{
if(atof(element)==0.0)
{
if(strcmp(element, "+") == 0)
{
a=Pop();
b=Pop();
Push(a+b);
}
else if(strcmp(element, "-") == 0)
{
a=Pop();
b=Pop();
Push(b-a);
}
else if(strcmp(element, "/") == 0)
{
a=Pop();
b=Pop();
Push(b/a);
}
else if(strcmp(element, "*") == 0)
{
a=Pop();
b=Pop();
Push(a*b);
}
else if(strcmp(element, "f") == 0)
{
a=Pop();
Push(floor(a));
}
else if(strcmp(element, "^") == 0)
{
a=Pop();
b=Pop();
Push(pow(b,a));
}
else if(strcmp(element, "%") == 0)
{
a=Pop();
b=Pop();
Push(int(b)%int(a));
}
else
{
cout << "\nCHYBA: Zadan"<<y<<" v"<<y<<"raz je neplatn"<<y<<"!\n\n";
system("PAUSE");
exit(EXIT_FAILURE);
}
}
else
Push(atof(element));
element = strtok(NULL, " ");
}
if(TOP==1)
return(ITEMS[TOP]);
else
{
cout << "\nCHYBA: V zasobn"<<i<<"ku sa nachadza viac hodn"<<p<<"t ked je o"<<c<<"akavan"<<y<<" v"<<y<<"sledok alebo ste nezadali "<<z<<"iaden v"<<y<<"raz!\n\n";
system("PAUSE");
exit(EXIT_FAILURE);
}
}
/**
* Funkcia main je hlavná funkcia programu.
*/
int _tmain(int argc, _TCHAR* argv[])
{
char a=160, u=163, e=130, c=159, s=231, o=236, z=167, y=236;
char string[10000];
cout << "\n\t\t\tProgram: Postfixov"<<y<< " kalkul"<<a<<"tor\n" << endl;
cout << "\nZadajte v"<<y<<"raz: \n" <<endl;
gets(string);
cout << "\nV"<<y<<"sledok je: " << PostCalc(string) << endl;
cout << "\n";
system("PAUSE");
return 0;
}
Kód:
// stdafx.cpp : source file that includes just the standard includes
// PostFix.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file
Prosim Vas, este je tam mensia chyba,ze pri zadani 0 mi ten program crashuje a vypise "Zadany vyraz je neplatny" neviem ako to osetrit :/
Dakujem