Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
SOLUCION EJERCICIO SPOTIFY
#include <stdio.h> #include <stdlib.h> #define POSNULA -1 typedef unsigned long long ULL; typedef struct { ULL codigo; ULL totalReproducciones; } tipoCancion; tipoCancion * leerDatos(tipoCancion * , ULL *); long long buscarSecuencial(tipoCancion *, ULL , ULL); void mostrarRanking(tipoCancion * , ULL); int compara (const void *, const void *); int main(void) { tipoCancion *puntero = NULL; ULL N = 0; //TOTAL DE CANCIONES puntero = leerDatos(puntero , &N); if (N!=0) mostrarRanking(puntero , N); if (puntero != NULL) free(puntero); return 0; } tipoCancion * leerDatos(tipoCancion *punteroCopia, ULL *N) { ULL codigoEntrada; ULL totalRepEntrada; long long posicion; do { scanf("%llu",&codigoEntrada); scanf("%llu",&totalRepEntrada); if (codigoEntrada == 0) break; posicion = buscarSecuencial(punteroCopia, *N , codigoEntrada); if (posicion == POSNULA) { punteroCopia = realloc ( punteroCopia , sizeof(tipoCancion) * ((*N) + 1)); if (punteroCopia == NULL) exit(EXIT_FAILURE); punteroCopia[*N].codigo = codigoEntrada; punteroCopia[*N].totalReproducciones = totalRepEntrada; (*N)++; } else { punteroCopia[posicion].totalReproducciones += totalRepEntrada; } } while (codigoEntrada != 0); return punteroCopia; } long long buscarSecuencial(tipoCancion *puntero, ULL N, ULL clave) { ULL i; for ( i = 0 ; i < N ; i++) if (puntero[i].codigo == clave) return i; return POSNULA; } void mostrarRanking(tipoCancion *punteroCopia, ULL N) { qsort(punteroCopia , N , sizeof(tipoCancion), compara); printf(" _______________________ ________________________\n"); printf("| CODIGO CANCION | TOTAL REPRODUCCIONES |\n"); printf("|_______________________|________________________|\n"); printf("| | |\n"); ULL i; for (i = 0 ; i < N ; i++) printf("|%22llu |%22llu |\n",punteroCopia[i].codigo,punteroCopia[i].totalReproducciones); printf("|_______________________|________________________|\n"); } int compara (const void *a, const void *b) { tipoCancion *ptrA = (tipoCancion *) a; tipoCancion *ptrB = (tipoCancion *) b; if (ptrA->totalReproducciones < ptrB->totalReproducciones) return 1; //SE HACE SWAP else if (ptrA->totalReproducciones > ptrB->totalReproducciones) return 0; //NO SE HACE SWAP else return 0; }
run
|
edit
|
history
|
help
0
merge two dice clay to head sport green globe attacked me seven of prime minister fired
USO DEL strrchr()
Exploiting uninitialized variable 2
tst2.c
Why &(a+1) is not allowed
time.c
structt
b=1,c=1
C programming example for a Person struct and typedef (from ECE 2534)
Text to ASCII (top)