Ver Mensaje Individual
  #11 (permalink)  
Antiguo 27/05/2011, 19:07
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 8 meses
Puntos: 228
Respuesta: Por qué no me lee con scanf un char al final de un ciclo?

Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. int main()
  6. {
  7.     int numero;
  8.     int prueba;
  9.     char sn;
  10.    
  11.     while(1 == 1){
  12.          srand(time(NULL));
  13.          numero = (rand() &#37; 1000) + 1;
  14.          printf("Tengo un numero entre 1 y 1000\n"
  15.                 "Puedes adivinar cual es?\n"
  16.                 "Por favor escribe tu primera respuesta\n");
  17.          scanf("%d", &prueba);
  18.          
  19.          while(prueba != numero){
  20.               if(prueba > numero){
  21.                    printf("\nMuy arriba. Intenta de nuevo.\n");
  22.                    scanf("%d", &prueba);
  23.                    }
  24.               if(prueba < numero){
  25.                    printf("\nMuy abajo. Intenta de nuevo.\n");
  26.                    scanf("%d", &prueba);
  27.                    }
  28.               }
  29.  
  30.          if(prueba == numero){
  31.               printf("Felicidades! Adivinaste el numero!\n");
  32.               }
  33.          while (sn != '\n') sn = getchar();
  34.          printf("Quieres jugar otra vez? (S/N)\n");
  35.          scanf("%c", &sn);
  36.          if(sn == 'S' || sn == 's')
  37.               continue;
  38.          else
  39.               break;
  40.          }
  41. }

Ahora que me sente en mi pieza y compile tu codigo pude ver bien los error. El primero de todo es el que te mencione..
Tienes que agregar while (sn != '\n') sn = getchar(); para vaciar el biffer de entrada porque al ingresar un numero y leer con scanf y presionas enter al mandarlo, ese enter queda en el baffer. Al leer un caracter este era el que se almacenaba en sn y entoces pasaba que se salteaba el scanf.

Segundo en el if para comparar con S o s fijate que estabas usando comillas dobles y eso es para cadenas de catacteres o array de caracteres. Para comparara un solo caracter con una variable tipo char (como es en tu caso) tienes que usar comillas simples.

Adios