Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
SOLUCION EJERCICIO SPOTIFY
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
#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; }
gcc
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
edit mode
|
history
|
discussion