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:
-
nome ingrediente
(stringa di 30 caratteri al piu', senza spazi intermedi)
-
uno e un solo
spazio
-
codice ingrediente
(numero intero)
-
uno e un solo
spazio
-
quantita' disponibile
(numero intero)
E' dato, inoltre,
un secondo file neces2.txt
relativo alla quantita' necessaria degli ingredienti. Più precisamente,
ogni riga contiene, nell'ordine:
-
quantita' necessaria
(numero intero)
-
uno e un solo
spazio
-
nome ingrediente
(stringa di 30 caratteri al piu', senza spazi intermedi)
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:
-
legga i dati degli
ingredienti disponibili dal file dispo2.txt
e li memorizzi in un array di ingredienti
di nome
ingre_dispo;
[si mostri
a video l'array così costruito]
-
legga i dati delle
quantita' necessarie dal file neces2.txt
e li memorizzi in un array di quantita
di nome
ingre_neces;
[si mostri
a video l'array così costruito]
-
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;
[si visualizzi
la lista esubero]
-
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.
[si visualizzino
i risultati dell'invocazione della procedura sulla lista esubero]
-
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.
[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).