Ayuda con un programa en c

moyulloag

Bovino adolescente
#1
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
 
#2
Mmmm

Creo que te estas complicando la vida.
Cuando vi en programa similar era para poner en practica lo que son las pilas y las notacion Prefija, infija y Posfija.
Creo que deberias leer un poco de esto talvez se te haria mas facil hacer este programa.

Revisa este enlace
http://es.wikipedia.org/wiki/Pila_(informática)
en esta parte
Expresión de evaluación y análisis sintáctico
 

mdx4

Bovino maduro
#3
Yo hice un programa asi empleando una pila. Desafortunadamente en uno de tantos formateos de mi máquina ese programa se fue al limbo u_u
No es muy dificil, solo q como en toda la programación hay q hecharle coco y un poco de lógica.
Tampoco esperes q te resuelvan el problema aqui, por q el foro no es para resolver tareas, sino para resolver dudas.
Suerte!
 
Arriba