Corso di Laboratorio di Informatica L-A

Esame dell'11 luglio 2002

Compito 2






È dato un file di testo dispo2.txt che contiene l'elenco degli ingredienti utilizzati nella cucina di un agriturismo  (si suppone siano in numero non superiore a 20), un ingrediente per riga. Più precisamente, ogni riga contiene, nell'ordine:

E' dato, inoltre, un secondo file neces2.txt relativo alla quantita' necessaria degli ingredienti. Più precisamente, ogni riga contiene, nell'ordine:


Si chiede di scrivere un programma C che, dopo aver definito una struct ingredienti (relativa ai dati del file dispo.txt) e una seconda struct quantita (relativa al file neces.txt), nel modo appropriato rispetto a quanto specificato sopra:

  1. legga i dati degli ingredienti disponibili dal file dispo2.txt e li memorizzi in un array di ingredienti di nome ingre_dispo;

  2. [si mostri a video l'array così costruito]
  3. legga i dati delle quantita' necessarie dal file neces2.txt e li memorizzi in un array di quantita di nome ingre_neces;

  4. [si mostri a video l'array così costruito]
  5. a partire dal vettore ingre_neces, cerchi nel vettore ingre_dispo gli ingredienti disponibili in quantita' superiore a quella necessaria e costruisca una lista di interi con le relative quantita' disponibili. Si chiami tale lista esubero;

  6. [si visualizzi la lista esubero]
  7. utilizzi una procedura void inesubero(list l), specificatamente progettata, che chieda all'utente di introdurre un numero intero che rappresenta una quantita' e stampi a video gli elementi della lista maggiori di tale valore.

  8. [si visualizzino i risultati dell'invocazione della procedura sulla lista esubero]
  9. FACOLTATIVO. A partire dal vettore ingre_dispo, si costruisca una lista (ordinata in ordine decrescente di codice) i cui elementi sono i record del vettore ingre_dispo. Si chiami tale lista lista_ingre_dispo.

  10. [si visualizzi la lista lista_ingre_dispo]
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).