C/Visual C - Me falta un 90 en el orden de numeros

 
Vista:

Me falta un 90 en el orden de numeros

Publicado por Julian (11 intervenciones) el 26/02/2019 19:22:08
Esto haciendo un menu de una empresa y en un momento le pido que ordene las edades de los trabajadores de menor a mayor, bueno, las edades son: { 19, 52, 60, 49, 90 }, cuando las ordena lo hace bien pero falta el 90 en el orden, sale esto: 0 19 49 52 60. Ese cero salido de la nada reemplaza al 90 y bueno, es el menor, ya intente reducir el maximo (i < n) en el for o aumentarlo pero no es eso. Alguien me dice que escribí mal?
QT en lenguaje C:

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
int  opcion;
char nombre[5][20] = { "Jose", "Luis", "Julio", "Marcelo", "Pepe" },
     apellido[5][20] = { "Rodriguez", "Benites", "Farias", "Sanchez", "Argento" };
int edad[5] = { 19, 52, 60, 49, 90 }, aux;
 
linea1:
printf("\t\t Bienvenido al registro de empleo para Kaiju Enterteiment!");
printf("\n.1 Lista de trabajadores");
printf("\n.2 Edad de los trabajdores");
printf("\n.3 Salir\n");
scanf("%i", &opcion);
 
switch (opcion){
case 1: for (int i = 0; i < 5; ++i){
 
        printf("Nombre: %s", nombre[i]);
        printf("\n");
        printf("Apellido: %s", apellido[i]);
        printf("\n\n");
    }
    break;
case 2: printf("Edades del menor a mayor:\n");
    for (int i = 0; i < 5; ++i) {
        for (int j = 0; j < 5; ++j){
 
            if(edad[j] > edad[j + 1]){
 
              aux = edad[j];
              edad[j] = edad[j + 1];
              edad[j + 1] = aux;
            }
        }
    }
    for (int j = 0; j < 5; ++j){ //falta el 90. Porque!?
        printf("%i", edad[j]);   //Encontrar la manera de ordenar a los trabajadres con sus nombres y edades
        printf("\n");
    }
 
    break;
case 3: printf("\n\tKaijuEnterteiment.Net\n\n");
 
    break;
default: printf("\nSe equivoco de opcion de menu!\n\n");
    goto linea1;
}
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: 60
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Me falta un 90 en el orden de numeros

Publicado por YamilBracho (26 intervenciones) el 26/02/2019 20:41:17
Estas corrompiendo memoria cuando haces edad[j+1] y j = 4.
Puedes cambiar el loop a

1
2
3
4
5
6
7
8
9
for (int i = 0; i < 5; ++i) {
	for (int j = i+1; j < 5; ++j){
		if(edad[i] > edad[j]) {
			aux = edad[i];
			edad[i] = edad[j];
			edad[j] = aux;
		}
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Gracias, me sirvió de mucho

Publicado por Julian (11 intervenciones) el 26/02/2019 20:58:26
gracias, me sirvio de mucho
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