Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/11/2011, 01:07
vladimirgude
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 7
Respuesta: Dev C++ Ejercicio!

Aquí un sencillo código realizado en DevC++

Código C:
Ver original
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. int valor, n1, n2;
  7. char ultimo_ingreso, operador, opcion;
  8.  
  9. ultimo_ingreso='C';
  10. n1=0;
  11. valor=0;
  12. do{
  13. system("cls");
  14. printf("\n\t|======== Pantalla =======");
  15. printf("\n\t|%d", valor);
  16. printf("\n\t|=========================");
  17. printf("\n\t|7|  |8|  |9|  |+|");
  18. printf("\n\t|4|  |5|  |6|  |-|");
  19. printf("\n\t|1|  |2|  |3|  |*|");
  20. printf("\n\t|1|  |2|  |3|  |/|");
  21. printf("\n\t|=|  |x|:salir");
  22. printf("\n\t|=========================");
  23.  
  24. //lectura
  25. if (ultimo_ingreso == 'C'){
  26.    printf("\n\t| inserte un valor: ");
  27.    scanf("%d", &valor);
  28. }
  29. if (ultimo_ingreso == 'N' || ultimo_ingreso == 'M'){
  30.    printf("\n\t| inserte un operador: ");
  31.    scanf("%c", &opcion);
  32. }
  33. if (ultimo_ingreso == 'P'){
  34.    printf("\n\t| inserte un valor: ");
  35.    scanf("%d", &valor);
  36. }
  37.  
  38. //cálculos
  39. if (ultimo_ingreso == 'C'){
  40.    n1=valor;
  41.    ultimo_ingreso='N';
  42. }
  43.  
  44. else
  45.  
  46. if (ultimo_ingreso == 'N'){
  47.    if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/'){
  48.       operador = opcion;
  49.       ultimo_ingreso='P';
  50.    }
  51.    if (opcion == 'x' || opcion == 'X')
  52.       return 0; //finalizar
  53. }
  54.  
  55. else
  56.  
  57. if (ultimo_ingreso == 'P'){
  58.    n2=valor;
  59.    ultimo_ingreso='M';
  60. }
  61.  
  62. else
  63.  
  64. if (ultimo_ingreso == 'M'){
  65.    if (opcion == '='){
  66.       if (operador == '+')
  67.          n1 = n1+n2;
  68.       if (operador == '-')
  69.          n1 = n1-n2;
  70.       if (operador == '*')
  71.          n1 = n1*n2;
  72.       if (operador == '/')
  73.          n1 = n1/n2;
  74.       valor = n1;
  75.       ultimo_ingreso = 'N';
  76.    }
  77.    
  78.    if (opcion == '+' || opcion == '-' || opcion == '*' || opcion == '/'){
  79.       operador = opcion;
  80.       ultimo_ingreso='P';
  81.    }
  82.    if (opcion == 'x' || opcion == 'X')
  83.       return 0; //finalizar
  84. }
  85.  
  86. }while(1); //ciclo infinito. Salir con el operador 'X'
  87. return 0;
  88. }

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...