Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
NETFLIX TERMINADO
#include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> typedef struct { char nombre[26]; char codigo[4]; float rating; unsigned short cantidad; char cantGeneros[5][11]; }datosDeSeries; // ---------------Prototipos------------------ void input(datosDeSeries *, unsigned short); void mostrar(datosDeSeries *, unsigned short); void strUpper(char *); void buscarPorPais(datosDeSeries *, unsigned short); int compareNames(const void *, const void *); void buscarPorGenero(datosDeSeries *, unsigned short); int compareRating(const void *, const void *); // -------------------------Main Program------------------------------ int main(void) { unsigned short total; char comando[18]; datosDeSeries series[1000]; // ------------------Input------------------------------- scanf("%hu", &total); getchar(); input(series, total); // -----------------Process------------------------------- while (1) { scanf("%17s", comando); if ( strcmp(comando, "FIN") == 0 ) break; if ( strcmp(comando, "MOSTRAR") == 0 ) { mostrar(series, total); continue; } if ( strcmp(comando, "BUSCAR_POR_PAIS") == 0 ) { buscarPorPais(series, total); continue; } if ( strcmp(comando, "BUSCAR_POR_GENERO") == 0 ) { buscarPorGenero(series, total); continue; } } printf("---- FIN ----"); return 0; } // -----------------------Functions----------------------------- void input(datosDeSeries *array, unsigned short total) { unsigned short i, j; for (i = 0 ; i < total ; i++) { scanf("%25[^#]s", array[i].nombre); getchar(); strUpper(array[i].nombre); scanf("%3[^#]s", array[i].codigo); getchar(); strUpper(array[i].codigo); scanf("%f", &array[i].rating); getchar(); scanf("%hu", &array[i].cantidad); getchar(); for (j = 0 ; j < array[i].cantidad; j++) { scanf("%10[^#]s", array[i].cantGeneros[j]); getchar(); strUpper(array[i].cantGeneros[j]); } getchar(); } } void mostrar(datosDeSeries *array, unsigned short total) { unsigned short i, j; printf("------------------------------------\n"); printf(" MOSTRANDO LISTADO DE SERIES\n"); printf("------------------------------------\n"); for ( i = 0 ; i < total ; i ++) { printf("%25s %4s %6.1f", array[i].nombre, array[i].codigo, array[i].rating); for ( j = 0 ; j < array[i].cantidad; j++ ) printf("%12s", array[i].cantGeneros[j]); printf("\n"); } } void strUpper(char *cadena) { while ( *cadena != '\0' ) { if ( islower(*cadena) ) *cadena = toupper(*cadena); cadena ++; } } void buscarPorPais(datosDeSeries *array, unsigned short total) { char pais[4]; datosDeSeries vector[1000]; unsigned short i, j; j = 0; scanf("%3s", pais); strUpper(pais); for ( i = 0 ; i < total ; i ++) { if ( strcmp(pais, array[i].codigo) == 0 ) { strcpy(vector[j].nombre, array[i].nombre); vector[j].rating = array[i].rating; j++; } } if ( j == 0) printf("----- NO EXISTEN SERIES REALIZADAS EN EL PAIS %s ----\n", pais); else { qsort(vector, j , sizeof(datosDeSeries), compareNames); printf("----- SERIES REALIZADAS EN %s ----\n", pais); for ( i = 0 ; i < j ; i ++ ) printf(" %25s %6.1f\n", vector[i].nombre, vector[i].rating); } } int compareNames(const void *pivot, const void *element) { datosDeSeries *ptrPivot = (datosDeSeries *) pivot; datosDeSeries *ptrElement = (datosDeSeries *) element; return strcmp( ptrPivot -> nombre, ptrElement -> nombre); } void buscarPorGenero(datosDeSeries *array, unsigned short total) { unsigned short i, j, k = 0; char genero[11]; char aux[26]; datosDeSeries vector[1000]; scanf("%10s", genero); strUpper(genero); for ( i = 0 ; i < total ; i ++ ) { for ( j = 0 ; j < array[i].cantidad ; j ++ ) { if ( strcmp(genero, array[i].cantGeneros[j]) == 0 ) { strcpy(vector[k].nombre, array[i].nombre); strUpper(vector[k].nombre); vector[k].rating = array[i].rating; k ++; break; } } } if ( k == 0) printf("----- NO EXISTEN SERIES REALIZADAS EN EL GENERO %s ----\n", genero); else { qsort(vector, k, sizeof(datosDeSeries), compareRating); for (i = 0 ; i < k - 1 ; i++) for (j = i + 1 ; j < k ; j ++) { if (vector[i].rating == vector[j].rating) { if ( strcmp(vector[i].nombre, vector[j].nombre) > 0) { strcpy(aux, vector[j].nombre); strcpy(vector[j].nombre, vector[i].nombre); strcpy(vector[i].nombre, aux); } } } printf("---- SERIES GENERO : %s ----\n", genero); for ( i = 0 ; i < k ; i ++) printf("%26s %6.1f\n", vector[i].nombre, vector[i].rating); } } int compareRating(const void *element, const void *pivot) { datosDeSeries *ptrPivot = (datosDeSeries *) pivot; datosDeSeries *ptrElement = (datosDeSeries *) element; return ( ptrPivot -> rating * 10 - ptrElement -> rating * 10); }
run
|
edit
|
history
|
help
0
first C code
My first program
Euclides MIRAR
Practice flipping the stars
Bit
MÓDULO 3, PREGUNTA 1, GUÍA 4
Jai
Bitex
selection sort
FizzBuzz