C/Visual C - Ordenamiento de Nombres Y Salarios en C

 
Vista:
Imágen de perfil de Gabriel

Ordenamiento de Nombres Y Salarios en C

Publicado por Gabriel (10 intervenciones) el 09/12/2016 21:08:29
Hola quisiera saber como hago para ordenar y que me queden los nombres correspondiente a los salarios, por que se ordenan los numeros/salarios pero los nombres y me quedan mal, aca les dejo el código :

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
63
64
65
66
67
68
69
70
71
72
73
74
#include <stdio.h>
 #include <string.h>
 #include <conio.h>
 
 struct  SALARIOS {
   int mes_1;
   int mes_2;
   int mes_3;
  float promedio;
 
  };
 
struct PERSONAS
{
char nombre[30];
char sexo[10];
  };
int main(){
struct SALARIOS salarios[5];
struct PERSONAS personas[5];
int i, j, k;
int nombre_a_buscar;
int suma=0;
for ( i = 0; i < 5; i++)
{
    printf("Ingrese su nombre : ");
    scanf("%s", &personas[i].nombre);
 
    printf("Ingrese su Sexo F / M : ");
    scanf("%s", &personas[i].sexo);
 
    printf("Ingrese el sueldo del MES 1 : ");
    scanf("%i", &salarios[i].mes_1);
 
    printf("Ingrese el sueldo del MES 2  : ");
    scanf("%i", &salarios[i].mes_2);
 
    printf("Ingrese el sueldo del MES 3 : ");
    scanf("%i", &salarios[i].mes_3);
 
}
 
for (j = 0; j < 5; j++) {
    suma = salarios[j].mes_1 + salarios[j].mes_2 + salarios[j].mes_3;
    salarios[j].promedio = suma/3;
 
}
for (k = 0; k < 5; k++) {
    printf("El promedio de : %s\t es de : \t%.2f ", personas[k].nombre, salarios[k].promedio);
    printf("\n\n\n");
}
 
//printf("Las personas con los 3 mejores salarios son : ");
int pos ; int aux ; int w ; int x;
 
for(x=0;x<5;x++){
    pos = x;
    aux = salarios[x].promedio;
 
    while((pos>0)&&(aux < salarios[pos-1].promedio)){
        salarios[pos].promedio = salarios[pos-1].promedio;
        pos--;
    }
    salarios[pos].promedio = aux;
}
printf("Las personas con los 3 mejores salarios son : ");
for(x=4;x>=0;x--){
    printf("Nombre: %s ", personas[x].nombre);
    printf(" Salario : %f ",salarios[x].promedio);
    printf("\n\n\n");
}
 
getch();
return 0;
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: 296
Bronce
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ordenamiento de Nombres Y Salarios en C

Publicado por agustin (272 intervenciones) el 10/12/2016 01:40:36
Y que tal si en vez de esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
struct  SALARIOS {
   int mes_1;
   int mes_2;
   int mes_3;
  float promedio;
 
  };
 
struct PERSONAS
{
   char nombre[30];
   char sexo[10];
};

Haces esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct  SALARIOS {
   int mes_1;
   int mes_2;
   int mes_3;
  float promedio;
 
  };
 
struct PERSONAS
{
   char nombre[30];
   char sexo[10];
   struct SALARIOS salario;
};
Con lo que esto:
1
2
struct SALARIOS salarios[5];
struct PERSONAS personas[5];
Quedaría como:
1
struct PERSONAS personas[5];
Y por otro lado tu lo que ordenas realmente es el promedio pero todo lo demás se queda como estaba. Realmente necesitas intercambiar toda la estructura persona (sin la modificación que te indico también tendrías que hacer lo propio con la estructura salario). Usa memcpy para intercambiar todo el bloque de memoria y para ello usa una estructura PERSONAS para poder usar como auxiliar.
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