## A postfix calculator!!...but somewhat broken

Good day to you.... I have this problem with my postfix calc.. I suspect it doesnt calculate at all ! .. it only writes input ...maybe theres error in string conversion.. please help if you can

Code:
```#include <iostream>
#include <math.h>
#include <string.h>

bool err = false;
//stack :
const int SIZE = 100;
double stack[SIZE];
int nOperandu = 0;

bool push(double x)
{
if (nOperandu<SIZE)
{
stack[nOperandu++] = x;
return true;
}
return false;
}

bool pop(double &x)
{
if (nOperandu>0)
{
x = stack[--nOperandu];
return true;
}
return false;
}

int getCount()
{
return nOperandu;
}

bool isEmpty()
{
return nOperandu==0;
}

//end of stack

// functions:
{
double a;
double b;
pop(b);
pop(a);

push(a+b);
}
void minus()
{
double a;
double b;
pop(b);
pop(a);

push(a-b);
}
void multiply()
{
double a;
double b;
pop(b);
pop(a);

push(a*b);
}
void divi()
{
double a;
double b;
pop(b);
pop(a);
if (b == 0)
{
printf("Cant div. by 0.\n");
err = true;
}
else push(a/b);
}
void mod()
{
double a;
double b;
pop(b);
pop(a);
if (b == 0)
{
printf("Cant div. by 0.\n");
err = true;
}
else push(a / b);
}

void powa()
{
double a;
double b;
pop(b);
pop(a);
if ((a == 0) && (b < 0))
{
printf("Cant pow. with negative number.\n");
err = true;
}
else push(pow(a,b));
}
void full()
{
double a;
pop(a);

if (a < 0) push(ceil(a));
else push(floor(a));
}

// end of functions

// main alg:
void alg()
{
char line[256];
char *cast = NULL;
char *nextCast = NULL;
double result;

cast = strtok_s(line," \n", &nextCast);
while ((cast != NULL) && !(err)) // loop till error
{
if ((cast[0]!='+') || (cast[0]!='-') || (cast[0]!='*') ||
(cast[0]!='/') || (cast[0]!='%') || (cast[0]!='^') ||
(cast[0]!='f'))  // if first char isnt operator then convert to number and add to stack
{
push(atof(cast));
}
else
{
switch (cast[0]) // chceks if there are enough operands in cases
{
case '+':
else
{
printf("Not enough operators.\n");
err = true;
}
break;
case '-':
if (getCount() >= 2) minus();
else
{
printf("Not enough operators.\n");
err = true;
}
break;
case '*':
if (getCount() >= 2) multiply();
else
{
printf("Not enough operators.\n");
err = true;
}
break;
case '/':
if (getCount() >= 2) divi();
else
{
printf("Not enough operators.\n");
err = true;
}
break;
case '%':
if (getCount() >= 2) mod();
else
{
printf("Not enough operators.\n");
err = true;
}
break;
case '^':
if (getCount() >= 2) powa();
else
{
printf("Not enough operators.\n");
err = true;
}
break;
case 'f':
if (getCount() >= 1) full();
else
{
printf("Not enough operators.\n");
err = true;
}
break;
}
}
cast = strtok_s( NULL, " \n", &nextCast); // jumps to next part of the line
}
/*
if (isEmpty()) printf("Lack of operators\n");
else
if (getCount() > 1) printf("Too many operators\n");
else*/
if (!err)
{
pop(result);
printf("Result is: %0.5lf.\n",result); // writes result with 5 decimal
}
}
//and of alg
int main()
{
alg();
//return 0;
system("PAUSE");
}```