Ciao a tutti,
Ho un problema con questa consegna.
Si definisca un tipo di dato strutturato libro_t per la rappresentazione di un libro in termini di codice numerico identificativo, titolo (una stringa di al più 50 caratteri), autore (una stringa di al più 50 caratteri) ed un prezzo (un valore intero per semplicità). Si definisca in seguito un altro tipo di dato strutturato libreria_t in grado di contenere le informazioni di un insieme dei libri presenti in una libreria, supponendo che essa possa contenere al massimo 100 libri. Si scriva un sottoprogramma che riceve in ingresso un array di librerie, un intero p e qualsiasi altro parametro ritenuto necessario. Il sottoprogramma restituisce un array allocato dinamicamente della dimensione strettamente necessaria per contenere tutti i dati dei soli libri con prezzo minore di p e popolato con i dati di tali libri. Nel caso l'elenco dei libri individuato sia vuoto o nel caso di errore di allocazione della memoria il sottoprogramma deve restituire NULL.
Il mio dubbio più grande è questo:
Non so se è giusto anche se lo dubito fortemente. Qualcuno potrebbe consigliarmi come correggerlo?
Grazie in anticipo.
Ho un problema con questa consegna.
Si definisca un tipo di dato strutturato libro_t per la rappresentazione di un libro in termini di codice numerico identificativo, titolo (una stringa di al più 50 caratteri), autore (una stringa di al più 50 caratteri) ed un prezzo (un valore intero per semplicità). Si definisca in seguito un altro tipo di dato strutturato libreria_t in grado di contenere le informazioni di un insieme dei libri presenti in una libreria, supponendo che essa possa contenere al massimo 100 libri. Si scriva un sottoprogramma che riceve in ingresso un array di librerie, un intero p e qualsiasi altro parametro ritenuto necessario. Il sottoprogramma restituisce un array allocato dinamicamente della dimensione strettamente necessaria per contenere tutti i dati dei soli libri con prezzo minore di p e popolato con i dati di tali libri. Nel caso l'elenco dei libri individuato sia vuoto o nel caso di errore di allocazione della memoria il sottoprogramma deve restituire NULL.
C:
#define MAX 50
#define MAX_L 100
typedef struct{
int codice;
char titolo[MAX];
char autore[MAX];
int prezzo;
}libro_t;
typedef struct{
libro_t inf_libri[MAX_L];
}libreria_t;
libreria_t* (libreria_t array[], int p){
int i, j, cont;
libreria_t *pf;
for(i=0, cont=0; i<MAX_L; i++){
if(array[i].inf_libri.prezzo<p)
cont++;
}
if(cont>0){
pf=malloc(sizeof(libreria_t)*cont);
if(pf){
for(i=0, j=0; i<MAX_L;i++){
if(array[i].inf_libri.prezzo<p){
(*(pf+j)).inf_libri.codice= array[i].inf_libri.codice;
strcpy((pf+j).inf_libri.titolo, array[i].inf_libri.titolo);
strcpy((pf+j).inf_libri.autore, array[i].inf_libri.autore);
(*(pf+j)).inf_libri.prezzo= array[i].inf_libri.prezzo;
j++;
}
}
return pf;
}
else
return NULL;
}
else
return NULL;
}
C:
for(i=0, j=0; i<MAX_L;i++){
if(array[i].inf_libri.prezzo<p){
(*(pf+j)).inf_libri.codice= array[i].inf_libri.codice;
strcpy((pf+j).inf_libri.titolo, array[i].inf_libri.titolo);
strcpy((pf+j).inf_libri.autore, array[i].inf_libri.autore);
(*(pf+j)).inf_libri.prezzo= array[i].inf_libri.prezzo;
j++;
}
}
Grazie in anticipo.