I asked the question Who will be disapproved? that had the rule Students would be sorted according to the number of problems solved, with draws sorted according to the alphabetical order of the names (there are no homonyms in the class), Well I managed to solve it but I wanted another way because in that I had to order twice My code
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct pessoas
{
char nome[100];
int nota;
};
struct pessoas pessoa[102];
void ordena(int teste);
void ordena2(int teste);
int main()
{
int teste, i, cont = 0;
while(scanf("%d", &teste) == 1)
{
for(i = 0; i < teste; i++)
{
scanf("%s %d", pessoa[i].nome, &pessoa[i].nota);
}
ordena(teste);
ordena2(teste);
printf("Instancia %d\n", ++cont);
puts(pessoa[teste - 1].nome);
putchar('\n');
}
system("pause");
return 0;
}
void ordena(int teste)
{
int i, j , aux;
char a[100];
for(i = 0; i < teste; i++)
{
for(j = 0; j < teste; j++)
{
if(pessoa[i].nota > pessoa[j].nota)
{
aux = pessoa[i].nota;
pessoa[i].nota = pessoa[j].nota;
pessoa[j].nota = aux;
strcpy(a, pessoa[i].nome);
strcpy(pessoa[i].nome, pessoa[j].nome);
strcpy(pessoa[j].nome, a);
}
}
}
}
void ordena2(int teste)
{
int i, j, aux;
char a[100];
for(i = 0; i < teste; i++)
{
for(j = i + 1; j < teste; j++)
{
if(pessoa[i].nota == pessoa[j].nota)
{
if(strcmp(pessoa[i].nome, pessoa[j].nome) > 0)
{
strcpy(a, pessoa[i].nome);
strcpy(pessoa[i].nome, pessoa[j].nome);
strcpy(pessoa[j].nome, a);
aux = pessoa[i].nota;
pessoa[i].nota = pessoa[j].nota;
pessoa[j].nota = aux;
}
}
}
}
}