Aquí un sencillo código realizado en DevC++
Código C:
Ver original#include <stdlib.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
int valor, n1, n2;
char ultimo_ingreso, operador, opcion;
ultimo_ingreso='C';
n1=0;
valor=0;
do{
printf("\n\t|======== Pantalla ======="); printf("\n\t|========================="); printf("\n\t|7| |8| |9| |+|"); printf("\n\t|4| |5| |6| |-|"); printf("\n\t|1| |2| |3| |*|"); printf("\n\t|1| |2| |3| |/|"); printf("\n\t|=========================");
//lectura
if (ultimo_ingreso == 'C'){
printf("\n\t| inserte un valor: "); }
if (ultimo_ingreso == 'N' || ultimo_ingreso == 'M'){
printf("\n\t| inserte un operador: "); }
if (ultimo_ingreso == 'P'){
printf("\n\t| inserte un valor: "); }
//cálculos
if (ultimo_ingreso == 'C'){
n1=valor;
ultimo_ingreso='N';
}
else
if (ultimo_ingreso == 'N'){
if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/'){
operador = opcion;
ultimo_ingreso='P';
}
if (opcion == 'x' || opcion == 'X')
return 0; //finalizar
}
else
if (ultimo_ingreso == 'P'){
n2=valor;
ultimo_ingreso='M';
}
else
if (ultimo_ingreso == 'M'){
if (opcion == '='){
if (operador == '+')
n1 = n1+n2;
if (operador == '-')
n1 = n1-n2;
if (operador == '*')
n1 = n1*n2;
if (operador == '/')
n1 = n1/n2;
valor = n1;
ultimo_ingreso = 'N';
}
if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/'){
operador = opcion;
ultimo_ingreso='P';
}
if (opcion == 'x' || opcion == 'X')
return 0; //finalizar
}
}while(1); //ciclo infinito. Salir con el operador 'X'
return 0;
}
El último valor u operador ingresado es manejado mediante la variable 'ultimo_ingreso', que puede contener:
'C' : iniciando
'N' : primer valor numérico
'P' : operador
'M' : siguiente valor numérico
Puedes probarlo ingresando lo siguiente (como ejemplo):
8 <enter>
* <enter>
4 <enter>
= <enter>
+ <enter>
2 <enter>
= <enter>
x <enter> (para salir)
Nota: Los resultados se van mostrando en la parte superior de la pantalla, simulando una calculadora.
Saludos...