Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2013, 17:28
ElPatoGarrido
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 13 años
Puntos: 3
[C] - Duda con el uso de Loops y scanf

Hola, el tema es que hice el codigo para una "calculadora" en C y tengo 2 scanf dentro de un while, uno en donde pido la operacion y otra donde pregunto que si el usuario desea seguir ingresando operaciones, con 'S' que si y 'N' que no, pero si ingreso una 'N' el programa da un loop mas y de hay finaliza, y si ingreso una 'S' el programa sigue mostrandome el resultado anterior automaticamente sin pedirme la nueva operacion.

Intente arreglandolo limpiando el buffer de entrada con:
Código C:
Ver original
  1. while ((ch = getchar()) != EOF && ch != '\n');
pero nada, siempre pasa que arreglo el funcionamiento al ingresar 'N' o el 'S', pero no ambas, me gustaria que me dijeran en que me equivoco por que pensaba que tenia estos conceptos claros, pero ya veo que no tanto...

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     double op_1, op_2, resultado;
  5.     int ch;
  6.     char opc = 'S';
  7.     char operador;
  8.    
  9.     printf("Bienvenido a la Calculador V1.0\nPara realizar operaciones ingrese una operacion\n\n");
  10.    
  11.     while (opc != 'N') {
  12.         scanf("%lf %c %lf", &op_1, &operador, &op_2);
  13.        
  14.         switch (operador) {
  15.             case '+':
  16.                 resultado = op_1 + op_2;
  17.                 break;
  18.             case '-':
  19.                 resultado = op_1 - op_2;
  20.                 break;
  21.             case '*':
  22.                 resultado = op_1 * op_2;
  23.                 break;
  24.             case '/':
  25.                 resultado = op_1 / op_2;
  26.                 break;
  27.             default:
  28.                 break;
  29.         }
  30.         printf("\nResultado: %g\n", resultado);
  31.        
  32.         printf("\nDesea continuar?... <S/N>: ");
  33.         scanf("%c", &opc);
  34.     }
  35.            
  36.     return 0;
  37. }