Corso di Laboratorio di Informatica L-A

Appello d'Esame del 14 Gennaio 2002

Turno 1 - Compito A



È 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 ordinata di interi i cui elementi sono gli incassi dovuti a ciascun prodotto (incasso = numero pezzi venduti * prezzo unitario), convertiti in numero intero. Si supponga per semplicità che i dati siano tali da non superare mai il range di rappresentazione del tipo int in C;

  4. [si visualizzi la lista costruita]
  5. richieda all'utente di inserire un numero intero che rappresenti la soglia minima di incasso min;
  6. utilizzi una procedura void visualizza(lista l, int min), specificatamente progettata, che mostri a video tutti gli elementi della lista minori della soglia min;
  7. (OPZIONALE) a partire dall'array vendite costruisca una ulteriore lista catalogo di stringhe i cui elementi sono le descrizioni di tutti i prodotti. Si implementi inoltre una funzione lista eliminaDoppi(lista l), che elimini eventuali ripetizioni di descrizioni esattamente uguali e la si invochi correttamente su catalogo. La funzione deve restituire la lista passata come argomento e privata delle eventuali ripetizioni.
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).