Ver Mensaje Individual
  #5 (permalink)  
Antiguo 17/06/2012, 10:37
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 10 meses
Puntos: 94
Respuesta: Error extraño: programa se salta un scanf

Tenes q presionar enter seguro porque tenes asi el codigo(sin contar el goto y cambiando los fflush por while):

Código C:
Ver original
  1. while(getchar()!='\n');
  2. printf("¿Desea calcular otra regla de tres? (s/n): ");
  3.             scanf("%c", &confirmar); //despues de esto tiene q ir un fflush
  4. while(getchar()!='\n');

Como te dije antes lo hace getchar() dentro del while es limpiarte el bufer del teclado, osea toma los caracteres hasta encontrar un '\n'. Pero vos en cada case ya usas un while despues de cada scanf, entonces cuando salis del switch-case el bufer ya esta vacio; por lo tanto ¿que es lo que va a limpiar el while(gechar()!='\n') antes de "Desea calcular otra regla de tres? (s/n):"? No va a limpiar nada entonces va a esperar a que vos ingreses un enter para continuar... Resumiendo ese while esta demas :)


El goto no es que no se usa mucho, directamente NO se debe usar... Mira como lo hago sin el goto:
Código C:
Ver original
  1. /* codigo despues del switch-case */
  2.         do {
  3.         printf("¿Desea calcular otra regla de tres? (s/n): ");
  4.         scanf("%c", &confirmar);
  5.         while(getchar()!='\n');
  6.         }while (confirmar != 's' && confirmar != 'n');
  7.  
  8.         seguir = confirmar;
  9.  
  10.         if (seguir=='s') {
  11.  
  12.             printf("\n\n ==================== \n\n");
  13.  
  14.         } /* fin del if */
  15.        
  16.     } /* fin del while(continuar=='s') */
  17.    
  18.     printf("Hasta luego \n");
  19.  
  20.     return 0;
  21.  
  22. }

Cualquier duda, segui preguntando. Saludos