Dev - C++ - Bucle infinito, no escanea el dato.

 
Vista:
sin imagen de perfil
Val: 1
Ha aumentado su posición en 54 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Bucle infinito, no escanea el dato.

Publicado por Osvaldo (1 intervención) el 09/10/2018 04:36:58
Este es mi programa.
Tiene un poco de paja por cuestiones de formalidad, pero el problema inicia cuando pide el sexo de la persona,
pues aunque se escriba 'm' o 'h' el programa manda el mensaje que se deberia mandar solo en caso de que el
usuario no escriba un valor correcto. Despues de eso no se si funcione xd pues no pasa de esa parte.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<stdlib.h>
#include<stdio.h>
int portada()
{
    printf("Universidad Nacional Autonoma de Mexico\n");
    printf("Facultad de Estudios Superiores Acatlan\n");
    printf("Matematicas Aplicadas y Computacion\n");
    printf("Grupo:1101\n");
    printf("Estrada Sosa Osvaldo Israel\n");
    printf("Maratón de la Ciudad de México\n\n");
}
int main(){
int i, edad;
char sexo;
	do{
		system("cls");
		portada();
		printf("Este programa te da el horario en que deberas presentarte al marat%cn según tu edad y sexo\n",162);
		printf("Escriba si es mujer (m) u hombre (h): \n");
		scanf("%c",&sexo);
		while(sexo!='m'||sexo!='h')
		{
			printf("Solo se admiten m o h: \n");
			scanf("%c",&sexo);
		}
		printf("Por favor, introduce tu edad en a%cos: \n",164);
		scanf("%i",&edad);
		while(edad<18||edad>39)
		{
			printf("Solo se admiten personas de 18 a 39 años: \n");
			scanf("%i",&edad);
		}
        if(sexo=='m'){
            if(edad>=18&&edad<=19){
            printf("Su categoria es Junior y su horario es 6:25... \n");
            }else if(edad>=20&&edad<=34){
                printf("Su categoria es Libre y su horario es 6:15... \n");
            }else {
                printf("Su categoria es Master y su horario es 6:35...\n");
            }
        }else if(sexo=='h'){
            if(edad>=18&&edad<=19){
                printf("Su categoria es Junior y su horario es 6:20... \n");
            }else if(edad>=20&&edad<=34){
                printf("Su categoria es Libre y su horario es 6:00...\n ");
            }else {
                printf("Su categoria es Master y su horario es 6:30...\n");
            }
        }else{}
 
        printf("Para repetir el programa escriba 1 de lo contrario 0+enter");
        scanf("%i",&i);
	}while(i==1);
 
	return 0;
}
Captura-de-pantalla-26

El bucle es infinito, ademas de que me acabo de dar cuenta que imprime el mensaje de error el mismo numero de veces que la cantidad de caracteres
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 278
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Bucle infinito, no escanea el dato.

Publicado por dario (149 intervenciones) el 09/10/2018 05:56:11
Hola, tu mismo codigo, fijate los pocos errores. He comentado //system("cls") porque uso Linux, y no funciona.
Saludos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<stdlib.h>
#include<stdio.h>
 
void portada()
{
    printf("Universidad Nacional Autonoma de Mexico\n");
    printf("Facultad de Estudios Superiores Acatlan\n");
    printf("Matematicas Aplicadas y Computacion\n");
    printf("Grupo:1101\n");
    printf("Estrada Sosa Osvaldo Israel\n");
    printf("Maratón de la Ciudad de México\n\n");
}
 
int main() {
    int i, edad;
    char sexo;
 
    do {
        //system("cls");
        portada();
        printf("Este programa te da el horario en que deberas presentarte al marat%cn según tu edad y sexo\n",162);
        printf("Escriba si es mujer (m) u hombre (h): \n");
        scanf("%c",&sexo);
 
        while(sexo!='m' && sexo!='h') {
            printf("Solo se admiten m o h: \n");
            scanf("%c",&sexo);
        }
 
        printf("Por favor, introduce tu edad en a%cos: \n",164);
        scanf("%i",&edad);
 
        while(edad<18 || edad>39) {
            printf("Solo se admiten personas de 18 a 39 años: \n");
            scanf("%d",&edad);
        }
 
        if(sexo=='m') {
            if(edad>=18 && edad<=19)
                printf("Su categoria es Junior y su horario es 6:25... \n");
            else if(edad>=20 && edad<=34)
                printf("Su categoria es Libre y su horario es 6:15... \n");
            else
                printf("Su categoria es Master y su horario es 6:35...\n");
 
        }
        else if(sexo=='h') {
            if(edad>=18 && edad<=19)
                printf("Su categoria es Junior y su horario es 6:20... \n");
            else if(edad>=20 && edad<=34)
                printf("Su categoria es Libre y su horario es 6:00...\n ");
            else
                printf("Su categoria es Master y su horario es 6:30...\n");
        }
 
    printf("Para repetir el programa escriba 1 de lo contrario 0+enter");
    scanf("%i",&i);
 
    } while(i==1);
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar