Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define NULA -1
- typedef unsigned long long Ull;
- typedef struct cancion {
- Ull codigo;
- Ull reproduccion;
- } Cancion;
- long long buscar(Cancion *,Ull,Ull);
- int comparar (const void *,const void *);
- void mostrar (Cancion *,Ull);
- int main () {
- Ull cod,rep;
- Ull totalCanciones = 0;
- Cancion *canciones = NULL; //se inicia en NULL para que realloc funcione como malloc
- long long pos;
- do {
- scanf("%llu",&cod);
- if (cod == 0) break;
- scanf("%llu",&rep);
- pos = buscar(canciones,totalCanciones,cod);
- if(pos == NULA) {
- // se inserta la posicion
- canciones = (Cancion *) realloc (canciones,sizeof(Cancion)*(totalCanciones+1));
- if(canciones == NULL) return 0; //si no hay memoria para reservar, se termina el programa
- canciones[totalCanciones].codigo = cod;
- canciones[totalCanciones].reproduccion = rep;
- totalCanciones++;
- }
- else {
- //se aumenta el total de reproducciones
- canciones[pos].reproduccion += rep;
- }
- }while (cod != 0);
- if (totalCanciones > 0) {
- qsort(canciones,totalCanciones,sizeof(Cancion),comparar);
- mostrar(canciones,totalCanciones);
- }
- return 0;
- }
- long long buscar(Cancion *vector ,Ull n ,Ull clave){
- long long i;
- for(i = 0 ;i < n;i++) {
- if (vector[i].codigo == clave) return i;
- }
- return NULA;
- }
- int comparar (const void *a,const void *b) {
- Cancion *ptrA = (Cancion *) a;
- Cancion *ptrB = (Cancion *) b;
- if (ptrA->reproduccion < ptrB->reproduccion) return 1;
- else return 0;
- }
- void mostrar(Cancion *vector,Ull n) {
- Ull i;
- printf(" _______________________ ________________________\n");
- printf("| CODIGO CANCION | TOTAL REPRODUCCIONES |\n");
- printf("|_______________________|________________________|\n");
- printf("| | |\n");
- for(i=0;i < n;i++) {
- printf("| %21llu | %21llu |\n",vector[i].codigo,vector[i].reproduccion);
- }
- printf("|_______________________|________________________|\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement