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

DO WHILE para repetir programa

Estas en el tema de DO WHILE para repetir programa en el foro de C/C++ en Foros del Web. Código: #include <stdio.h> #include <stdlib.h> int main() { //Declaración de variables char lcRepetirPrograma; int linumero1, linumero2, litotal; do { //Entrada de datos printf("Ingrese #1? "); ...
  #1 (permalink)  
Antiguo 25/01/2015, 18:48
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 4 meses
Puntos: 5
Pregunta DO WHILE para repetir programa

Código:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    //Declaración de variables
    char lcRepetirPrograma;
    int linumero1, linumero2, litotal;

    do {

    //Entrada de datos
    printf("Ingrese #1? ");
    scanf("%d", &linumero1);
    printf("Ingrese #2? ");
    scanf("%d", &linumero2);

    //Procesamiento
    litotal = linumero1 + linumero2;

    //Salida de datos
    printf("La suma es: %d", litotal);

    printf("\n\n\tRepetir Programa (S) ?: ");
    scanf("%c", &lcRepetirPrograma);

    } while (lcRepetirPrograma == 'S' || lcRepetirPrograma == 's');

}
El DO WHILE no me funciona, no me hace la pregunta, que tengo mal?.
Saludos!.
  #2 (permalink)  
Antiguo 25/01/2015, 20:36
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
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);

Etiquetas: char, funcion, int, numero, programa, repetir
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 02:43.