Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[C] - Duda con el uso de Loops y scanf

Estas en el tema de [C] - Duda con el uso de Loops y scanf en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/02/2013, 17:28
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 5 meses
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. }
  #2 (permalink)  
Antiguo 25/02/2013, 11:14
Avatar de L3m0n  
Fecha de Ingreso: diciembre-2011
Mensajes: 219
Antigüedad: 12 años, 3 meses
Puntos: 46
Respuesta: [C] - Duda con el uso de Loops y scanf

Buenas, la verdad que scanf deja bastante que desear como funcion de input, te recomiendo que intentes cambiarlo por fgets() y sscanf() y en el caso de que quieras solo un caracter por fgetc(), debería solucionar los problemas con el buffer.


Saludos

Etiquetas: funcion, int, loops, programa, scanf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.