1
Programação e Scripts / Problemas com expressões infixas em C
« Online: 12 de Agosto de 2014, 11:42 »
Bom dia, vim aqui porque estou com sérias dúvidas em resolver um problema com expressões infixas: (2+(3*3)), estou com várias dúvidas sobre como fazer o código e praticamente estou estagnado pois só consigo ler e fazer a operação dos últimos parenteses lidos e não da expressão como um todo, vou postar o código aqui
Código: [Selecionar]
void resul(char expression[])
{
int n,t=0,b=0,a=0,tmp[10],resultado=0,i;
char *pi,aux[5];
n = strlen(expression);
pi = calloc(n,sizeof(char));
for(i=0;i<10;i++)tmp[i]=0;
for(i=0;expression[i]!='\0';i++)
{
switch(expression[i])
{
case '(':
pi[t]=expression[i];
t++;
break;
case ')':
while(1)
{
if(pi[t-1]=='(') break;
else
{
if(pi[t-1]=='+')
{
tmp[a]=atoi(aux);
aux[0]='\0';
b=0;
resultado=tmp[a]+tmp[a-1];
tmp[a-1]=resultado;
tmp[a]=0;
--a;
--t;
}
printf("teste\n");
}
}
break;
case '+':
while(1)
{
if(pi[t-1]='(') break;
--t;
}
tmp[a]= atoi(aux);
a++;
aux[0]='\0';
b=0;
pi[t]=expression[i];
t++;
break;
default:
aux[b]=expression[i];
b++;
aux[b]='\0';
break;
}
}
printf("resultado: %d", resultado);
free(pi);
}