Untitled
unknown
c_cpp
a year ago
2.1 kB
7
Indexable
#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;
}
Editor is loading...
Leave a Comment