No veo el error que dices.
Recuerda que tienes que pulsar el caracter '=' despues de una operación.
Le agregué la opción de inicializar o borrar, con el operador o tecla 'C'. Puedes ingresar la tecla 'C', o '=' (para el resultado), o 'X' (para salir), cuando te solicite que insertes un operador.
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
if (opcion == 'c' || opcion == 'C'){
n1=0;
n2=0;
valor=0;
ultimo_ingreso='C';
}
}
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
if (opcion == 'c' || opcion == 'C'){
n1=0;
n2=0;
valor=0;
ultimo_ingreso='C';
}
}
}while(1); //ciclo infinito. Salir con el operador 'X'
return 0;
}
Avísame cómo te fué. Saludos...