Corso di Laboratorio di Informatica L-A

Appello d'Esame del 14 Gennaio 2002

Turno 1 - Compito D



È 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 valoreResti;
  2. legga il resoconto delle vendite dal file e ne metta gli elementi in un array di giocattolo di nome piccoliResti, se e solo se il valore dei pezzi rimasti (numero pezzi magazzino * prezzo unitario) in magazzino di quel prodotto è maggiore di valoreResti;

  3. [si mostri a video l'array così costruito]
  4. a partire dal vettore piccoliResti, costruisca una lista ordinata di interi i cui elementi sono il numero di pezzi che giacciono in magazzino per ogni prodotto;
    [si visualizzi la lista costruita]
  5. utilizzi una funzione double mediaRimasti(lista l), specificatamente progettata, che restituisca il valore medio aritmetico degli elementi della lista, ottenuto scartando l'elemento più piccolo e 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, il codice del prodotto e la sua descrizione. Appartengano alla lista l2 i soli elementi di piccoliResti la cui descrizione ha lunghezza inferiore ad un numero intero lung 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).