Corso di Laboratorio di Informatica L-A

Appello d'Esame del 14 Gennaio 2002

Turno 1 - Compito B


È 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. richieda all'utente di inserire un numero intero resti;
  2. legga il resoconto delle vendite dal file e ne metta gli elementi in un array di giocattolo di nome grandiResti, se e solo se il numero di pezzi rimasti in magazzino di quel prodotto è maggiore di resti;

  3. [si mostri a video l'array così costruito]
  4. a partire dal vettore grandiResti, costruisca una lista ordinata di interi i cui elementi sono il numero di pezzi venduti per ogni prodotto. Si supponga che il negozio avesse inizialmente un numero uguale NUM=2000 di pezzi di ogni prodotto;
    [si visualizzi la lista costruita]
  5. utilizzi una funzione float mediaVenduti(lista l), specificatamente progettata, che restituisca il valore medio aritmetico degli elementi della lista, ottenuto scartando l'elemento più grande. Il programma principale stampi inoltre a video tale valore medio;
  6. (OPZIONALE) costruisca una ulteriore lista l2 di strutture in cui ogni elemento è una struttura contenente due campi, la descrizione del prodotto ed il suo codice. Appartengano alla lista l2 i soli elementi di grandiResti il cui valore dei pezzi giacenti in magazzino (numero pezzi * prezzo unitario) è superiore ad un numero intero valore richiesto dinamicamente all'utente. Sia inoltre la lista l2 ordinata in base al campo codice.
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).