Untitled

mail@pastecode.io avatar
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