Podpowie ktoś w którym momencie w drugiej części programu jest jakis błąd? bo próbuje i próbuje ale zapętla sie i nie moge dojść w którym momencie.
#include <iostream>
#include <sstream>
#include <cstring>
using namespace std;
int main()
{
ostringstream ss;
char stos[256];
int stos2[256];
char el[256];
int ws = 0,dl;
do
{
cin >> el;
if(el[0] >= '0' && el[0] <= '9') ss << el << " ";
else
switch(el[0])
{
case '+': ;
case '-': while(ws && stos[ws - 1] != '(') ss << stos[--ws] << " ";
stos[ws++] = el[0];
break;
case '*': ;
case '/': while(ws && stos[ws - 1] != '(' &&
stos[ws - 1] != '+' &&
stos[ws - 1] != '-') ss << stos[--ws] << " ";
stos[ws++] = el[0];
break;
case '^': while(ws && stos[ws - 1] == '^') ss << stos[--ws] << " ";
stos[ws++] = el[0];
break;
case '(': stos[ws++] = '(';
break;
case ')': while(stos[ws - 1] != '(') ss << stos[--ws] << " ";
ws--;
break;
case '=': while(ws) ss << stos[--ws] << " ";
ss<< "=";
break;
}
} while(el[0] != '=');
cout<<ss.str().c_str();
cout<<endl;
//obliczanie ONP
string x;
x=ss.str().c_str();
int ws2=0;
cout<<"char"<<endl;
char *el3=new char[x.length()+1];
int a,b,w;
do
{
strcpy(el3,x.c_str());
if(el3[0] >= '0' && el3[0] <= '9')
{
a = b = 0;
do a = 10 * a + el3[b++] - 48; while(el3[b]);
stos2[ws2++] = a;
}
else if(el3[0] == '=') cout << stos2[--ws2] << endl;
else
{
b = stos2[--ws2]; a = stos2[--ws2];
switch(el3[0])
{
case '+': w = a + b; break;
case '-': w = a - b; break;
case '*': w = a * b; break;
case '/': w = a / b; break;
case '^': w = 1;
while(b--) w *= a;
break;
}
stos2[ws2++] = w;
}
} while(el3[0] != '=');
return 0;
}