#include <stdio.h>
#include <locale.h>
#include <stdlib.h>

struct musica {
	char nome[100];
	char estilo[100];
	int rank;
};

typedef struct musica Musica;

int compararMusicas(const void* musica1, const void* musica2){
    Musica* m1 = *((Musica**)musica1);
    Musica* m2 = *((Musica**)musica2);

    return m1->rank-m2->rank;
}

int main (void) {
	int i,j;
	Musica *a[8];

	setlocale(LC_ALL, "Portuguese");

	for (i=0; i<4; i++) {
        a[i] = malloc(sizeof(Musica));
		printf ("Nome da música: ");
		gets (a[i]->nome);

		printf ("Estilo musical: ");
		gets (a[i]->estilo);

		printf ("Ranking da música: ");
		scanf ("%d",&(a[i]->rank));

		printf ("\n\n");

		getchar();
	}
//RANKING DIGITADO DESORDENADO
	for (i=0; i<4; i++) {
		printf ("RANK %d\t%s\t%s\t\n", a[i]->rank, a[i]->nome, a[i]->estilo);
	}

            qsort(a, 4, sizeof(Musica*), compararMusicas);

	printf ("\n");
//RANKING ORDEM
	for (i=0; i<4; i++) {
		printf ("RANK %d\t%s\t%s\t\n", a[i]->rank, a[i]->nome, a[i]->estilo);
	}

	return 0;
}
