que onda necesito ayuda con un programa de precedencia de operadores que tiene que acer es que pida una operacion y se introdusca algo asi: 9*3.5+2.6/2-1 que evalue la expresion e imprima segun la precedencia p jerarkias de operadores e imprima el resultado y el resultado final es decir:
1.- 9.00 * 3.50 = 31.50
2.- 2.60 / 2.00 = 1.30
3.- 31.50 + 1.30 = 32.80
4.- 32.80 - 1 = 31.80
eso tendria que aparecer en pantalla y mi codigo hasta ahora va asi
float operandos [20],res1,res2,res3,res4;
char cad[20],oper[20],operadores[20];
int i,j=0,z,y=0,w=0;
printf("\n Introduce la operacion que deseas realizar ");
scanf("%s",cad);
for(i=0;i<20;i++)
{
if ((cad == '*') || (cad == '/') || (cad == '+') || (cad == '-'))
{
operadores[w++]=cad;
operandos[y++]=atof(oper);
for(z=0;z<20;z++)
{
oper[z]=NULL;
}
j=0;
}
else
{
if (cad=='\0')
{
operandos[y++]=atof(oper);
}
oper[j++]=cad;
}
}
AQUI ES DONDE ESTOY ATORADO
en acer las condiciones para que primero haga la operacion de multiplicar luego la division luego suma y luego resta
for(i=0;i<20;i++)
{
if((operadores== '*') || (operadores== '/') )
{
if(operadores=='*')
{
res1=operandos*operandos[i+1];
printf("\n %.2f * %.2f = %.2f \n",operandos,operandos[i+1],res1);
operandos[i+1]=res1;
}
if(operadores=='/')
{
res2=operandos/operandos[i+1];
printf("\n %.2f / %.2f = %.2f \n",operandos,operandos[i+1],res2);
operandos[i+1]=res2;
}
}
}
getch();
}
ESPERO ME PUEDAN AYUDAR ACONSEJAR O CORREGIR GRACIAS
1.- 9.00 * 3.50 = 31.50
2.- 2.60 / 2.00 = 1.30
3.- 31.50 + 1.30 = 32.80
4.- 32.80 - 1 = 31.80
eso tendria que aparecer en pantalla y mi codigo hasta ahora va asi
float operandos [20],res1,res2,res3,res4;
char cad[20],oper[20],operadores[20];
int i,j=0,z,y=0,w=0;
printf("\n Introduce la operacion que deseas realizar ");
scanf("%s",cad);
for(i=0;i<20;i++)
{
if ((cad == '*') || (cad == '/') || (cad == '+') || (cad == '-'))
{
operadores[w++]=cad;
operandos[y++]=atof(oper);
for(z=0;z<20;z++)
{
oper[z]=NULL;
}
j=0;
}
else
{
if (cad=='\0')
{
operandos[y++]=atof(oper);
}
oper[j++]=cad;
}
}
AQUI ES DONDE ESTOY ATORADO
en acer las condiciones para que primero haga la operacion de multiplicar luego la division luego suma y luego resta
for(i=0;i<20;i++)
{
if((operadores== '*') || (operadores== '/') )
{
if(operadores=='*')
{
res1=operandos*operandos[i+1];
printf("\n %.2f * %.2f = %.2f \n",operandos,operandos[i+1],res1);
operandos[i+1]=res1;
}
if(operadores=='/')
{
res2=operandos/operandos[i+1];
printf("\n %.2f / %.2f = %.2f \n",operandos,operandos[i+1],res2);
operandos[i+1]=res2;
}
}
}
getch();
}
ESPERO ME PUEDAN AYUDAR ACONSEJAR O CORREGIR GRACIAS