Corso di Laboratorio di Informatica L-A

Appello d'Esame del 14 Gennaio 2002

Turno 1 - Compito C



È dato un file di testo VENDITE.TXT che contiene il resoconto delle vendite natalizie relativo ai 20 prodotti distribuiti da un negozio di giocattoli, un prodotto per riga. Più precisamente, ogni riga contiene, nell'ordine:

Si chiede di scrivere un programma C che, dopo aver definito una struttura giocattolo nel modo appropriato rispetto a quanto specificato sopra:
  1. legga il resoconto delle vendite dal file e lo metta in un array di giocattolo di nome vendite;

  2. [si mostri a video l'array così costruito]
  3. a partire dal vettore vendite, costruisca una lista non ordinata di interi i cui elementi siano il numero di pezzi rimasti invenduti di ciascun prodotto. Si supponga che il negozio avesse inizialmente un numero uguale NUM=100 di pezzi di ogni prodotto;

  4. [si visualizzi la lista costruita]
  5. richieda all'utente di inserire due numeri interi invenduti e soglia;
  6. utilizzi una funzione int quanti(lista l, int invenduti, int soglia), specificatamente progettata, che restituisca quanti sono gli elementi della lista maggiori di invenduti se e solo se tale numero è superiore a soglia. In caso di numero inferiore a soglia deve essere restituito -1;
  7. (OPZIONALE) costruisca una ulteriore lista l2 di strutture in cui ogni elemento è una struttura contenente due campi, il codice del prodotto ed il valore dei pezzi giacenti in magazzino (numero pezzi invenduti * prezzo unitario). Appartengano alla lista l2 i soli elementi di vendite il cui numero di invenduti è inferiore a invenduti. Sia inoltre la lista l2 ordinata in base al campo valore dei pezzi giacenti.
E' possibile utilizzare librerie C (ad esempio per stringhe) e si devono utilizzare le librerie sulle liste presentate a lezione (list.h, list.c, element.h).