Como parar bucle infinito

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Avatar de Usuario
Beiker
Mensajes: 40
Registrado: 25/03/2006 12:00 am

Como parar bucle infinito

#1 Mensaje por Beiker » 26/10/2008 4:09 am

Hola, tengo una duda existencial, tengo un programa que me elije los dias de la semana y si no estan entre 1 y 7 da un error, avisando k se introduzca otra vez el numero, el problema viene cuando se entra un numero del 1 al 7 y sale el mensajito del dia, pero no para, o sea un bucle infinito, me gustaria saber como se puede parar este bucle infinito.
Muchas gracias a todos/as

Aqui les dejo el codigo:

/* Este es el ejercicio 11 de la hoja de repaso de programacion */

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main(){

int dia=0;

printf("Introduce un dia de la semana\n");
scanf("%d",&dia);
while((dia<1) || (dia>7)){
printf("Vuelve a escribir otro dia\n");
scanf("%d",&dia);
do{
switch(dia){
case 1 : printf("Hoy es lunes");
break;
case 2 : printf("Hoy es Martes");
break;
case 3 : printf("Hoy es Miercoles");
break;
case 4 : printf("Hoy es Jueves");
break;
case 5 : printf("Hoy es Viernes");
break;
case 6 : printf("Hoy es Sabado");
break;
case 7 : printf("Hoy es Domingo");
break;
}
}while(dia<=7);
}
system("PAUSE");
}

WaRc3L
Mensajes: 199
Registrado: 12/06/2008 12:27 pm
Ubicación: en el registro de la CPU

#2 Mensaje por WaRc3L » 26/10/2008 4:27 am

Tu programa tiene un error de "usuario" ( no existen estos errores, pero no se como decirlos ok ? ), si resulta que el usuario, se equivoka 2 veces poniendo dos 0, el bucle se repetira sin hacer nada, porque no hay switch, que hace 0,.

Podrias, hacer lo siguiente:



#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main(){

int dia=0;

printf("Introduce un dia de la semana\n");
scanf("%d",&dia);
while((dia<1) || (dia>7))
{
printf("\nVuelve a escribir otro dia\n");
scanf("%d",&dia);
}
switch(dia){
case 1 : printf("Hoy es lunes");
break;
case 2 : printf("Hoy es Martes");
break;
case 3 : printf("Hoy es Miercoles");
break;
case 4 : printf("Hoy es Jueves");
break;
case 5 : printf("Hoy es Viernes");
break;
case 6 : printf("Hoy es Sabado");
break;
case 7 : printf("Hoy es Domingo");
break;
}

system("pause");
}


Fijate, he hecho solo un while, para la entrada de datos, y no para de repetirse hasta que el usuario introduzca bien los datos ( 1 .... 7 ), despues, esta vez, solo hara una vez, porque he quitado el bucle que havia dentro, que era el que no parava de repetirse.

Saludos! espero que te haya ayudado!
ToDos PoDeMoS CoMpaRTiR La Luz De La BoMBiTa!

Avatar de Usuario
Beiker
Mensajes: 40
Registrado: 25/03/2006 12:00 am

Muchas gracias tio!!!

#3 Mensaje por Beiker » 26/10/2008 6:44 am

Muchas gracias tio!!!

Yo que ya me estaba liando, jeje. bueno creo que debe ser normal a un dia del examen de C.

Saludos

Beiker

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 10 invitados