Un prodotto di un supermercato può essere catalogato come "fresco", "alimentare", "detersivo" o "altro". Se il prodotto è fresco, abbiamo bisogno di una data di scadenza.
Inoltre, un prodotto è definito da un codice, da un prezzo di acquisto e un prezzo di vendita, con il prezzo di vendita sempre maggiore di quello d'acquisto.
Dato che bisogna gestire vari prodotti, ogni prodotto è pensato per far parte di una lista; contiene, quindi, un riferimento alla quantità di prodotti di quel tipo presenti e un riferimento al prodotto successivo.
Ecco come ho pensato di implementare il tutto. Creo un nuovo tipo struttura Prodotto_t e la funzione per creare un nuovo prodotto. Inoltre, creo un'enumerazione esterna di tipi di prodotti, che mi serviranno nel resto del programma. Consigli, suggerimenti? Grazie mille a tutti!!
codice:enum tipi {FRESCO = 1, ALIMENTARE, DETERSIVO, ALTRO}; typedef struct prodotto { char *nome; long codice; int tipo; int scadenza; double prezzoacq; double prezzoven; int quantita; struct prodotto *next; } Prodotto_t; /* ** Crea un nuovo prodotto partendo dalle sue caratteristiche. ** Restituisce NULL se non è possibile allocare nuova memoria o se il prezzo di ** vendita è inferiore a quello di acquisto; restituisce un puntatore a Prodotto_t ** se procede tutto bene. */ Prodotto_t *creaprodotto(char *nome, long codice, int tipo, double prezzoacq, double prezzoven) { Prodotto_t *newp = malloc (sizeof(Prodotto_t)); if (newp == NULL) { fprintf(stderr, "creaprodotto: Impossibile allocare nuova memoria\n"); return NULL; } if(prezzoacq >= prezzoven) { fprintf(stderr, "creaprodotto: Prezzo vendita deve essere maggiore di" "prezzo acquisto\n"); return NULL; } strcpy(newp->nome, nome); newp->codice = codice; newp->tipo = tipo; newp->prezzoacq = prezzoacq; newp->prezzoven = prezzoven; newp->quantita = 0; //quantita qui non interessa, verrò definita al momento dell'inserimento del prodotto con la funzione addprodotto if (tipo = FRESCO) newp->scadenza = 0; else newp->scadenza = -1; //se non si tratta di un prodotto fresco, non c'è bisogno di una data di scadenza return newp; }


Rispondi quotando