Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/01/2015, 20:36
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 4 meses
Puntos: 1360
Respuesta: DO WHILE para repetir programa

Creo que en cuanto a lógica o sintaxis todo esta correcto.

Lo que pasa es que acabas de cometer un error muy sencillo, estas asumiendo que scanf va a ignorar los espacios en blanco.

Por ejemplo si escribes en la pregunta "100 200s" va a hacer justo lo que le pides. Lee un entero, lee el siguiente entero y lee el carácter que siga de ese entero.

Mientras lo que tu quieres es, lee un entero, leer otro entero y lee el siguiente carácter que no sea blanco.

Volviendo a tu código hagamos un poco de debuggin manual.

Esto se supone que es lo que teclearas: "100\n200\ns" (comillas para clarificación, realmente no son usadas) (\n significa enter).

Código:
// Primer scan
// "100\n200\ns"
scanf("%d", &a);

// Segundo scan
// a = 100
// "\n200\ns"
scanf("%d", &b);

// Tercer scan
// a = 100, b = 200
// "\ns"
scanf("%c", &c);

// Despues del tercer scan
// a = 100, b = 200, c = '\n'
// "s"
Mi sugerencia es pon un simple espacio al principio, eso consumirá todos los caracteres blancos.

Código C:
Ver original
  1. scanf(" %c", &c);