Untitled
unknown
c_cpp
20 days ago
2.1 kB
2
Indexable
Never
#include <stdio.h> #include <stdlib.h> #include <string.h> #define DIM 50 typedef struct libro { char titolo[DIM+1]; char autore[DIM+1]; int prezzo; } libro_t; typedef struct libreria { libro_t lib[100]; int num_libri; } libreria_t; libro_t* prezzo_minore(libreria_t library[], int p, int dim_library, int *count) { *count = 0; int i, j; for (i = 0; i < dim_library; i++) { for (j = 0; j < library[i].num_libri; j++) { if (library[i].lib[j].prezzo < p) { (*count)++; } } } if (*count == 0) { return NULL; } libro_t *libri_filtrati = (libro_t*)malloc(*count * sizeof(libro_t)); if (libri_filtrati != NULL) { int indice = 0; for (i = 0; i < dim_library; i++) { for (j = 0; j < library[i].num_libri; j++) { if (library[i].lib[j].prezzo < p) { libri_filtrati[indice] = library[i].lib[j]; indice++; } } } return libri_filtrati; } else { return NULL; } } int main() { libreria_t librerie[2] = { { .lib = { {"Il libro degli esempi 1", "Autore A", 25}, {"Il libro degli esempi 2", "Autore B", 15}, }, .num_libri = 2 }, { .lib = { {"Il libro degli esempi 3", "Autore C", 30}, {"Il libro degli esempi 4", "Autore D", 20}, }, .num_libri = 2 } }; int count; libro_t* array_lib = prezzo_minore(librerie, 25, 2, &count); if (array_lib != NULL) { int i; for (i = 0; i < count; i++) { printf("Titolo: %s, Autore: %s, Prezzo: %d\n", array_lib[i].titolo, array_lib[i].autore, array_lib[i].prezzo); } free(array_lib); } else { printf("Nessun libro trovato con prezzo inferiore a 25.\n"); } return 0; }
Leave a Comment