AYUDA POR FAVOOOR

Iniciado por MarSalem, 6 Noviembre 2019, 21:17 PM

0 Miembros y 1 Visitante están viendo este tema.

MarSalem

necesito ordenar por genero, todos los femeninos primero, despues todos los femeninos con mayor handicap llegando al menor, luegos los masculinos con mayor handicap hasta llegar al menor pr ultimo. este es mi codigo pero no lo ordena de la forma que quiero.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

struct jugador {
char nombre [20];
char sexo;
int handicap;
};
void carga( struct jugador[], int );
void mirar( struct jugador[], int );
void ordenar ( struct jugador[], int );

#define N 4
#define largo 20

int main(){
struct jugador vec[N];
   carga (vec, N);
   ordenar ( vec, N );
   mirar ( vec, N );
}


void mirar (struct jugador v[], int n)
{
int i;
       printf ("NOMBRE\t SEXO\t HANDICAP\t\n");
   for(i=0;i<n;i++)
       {
           printf ("%s\t %c \t %d \n", v[i].nombre , v[i].sexo , v[i].handicap);
       }
}

void carga (struct jugador v[], int n)
{
int i;
   for (i=0;i<n;i++){
       printf ("\n\tingrese nombre del jugador : ");
       fflush (stdin);
       gets(v[i].nombre);
       printf ("\n\tingrese sexo del jugador : ");
       v[i].sexo = getchar();
       printf ("\n\tingrese handicap del jugador : ");
       scanf ("%d", &v[i].handicap);
   }
}

void ordenar ( struct jugador v[], int n ){
int i, j;
struct jugador aux;

for ( i = 0 ; i < n-1 ; i++ )
for ( j = 0 ; j < n-i-1 ; j++ )
if( (v[j].sexo == 'f') && v[j].handicap > v[j+1].handicap ){

aux = v[j];
v[j] = v[j+1];
v[j+1] = aux;
}
}[code=c][code=c]
[/code][/code]
insta @marsquarepants

CalgaryCorpus

y si esta condicion

Código (cpp) [Seleccionar]
if( (v[j].sexo == 'f') && v[j].handicap > v[j+1].handicap ){

la cambias por

Código (cpp) [Seleccionar]
if(( (v[j].sexo == 'f') && v[j+1].sexo == 'm')) ||
      ((v[j].sexo == v[j+1].sexo) && v[j].handicap > v[j+1].handicap) ){



Cambia algo?
Aqui mi perfil en LinkedIn, invitame un cafe aqui