Corso di Laboratorio di Informatica L-A
Esame dell'11 luglio 2002
Compito 1
È dato
un file di testo dispo.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:
-
codice ingrediente
(numero intero)
-
uno e un solo
spazio
-
nome ingrediente
(stringa di 30 caratteri al piu', senza spazi intermedi)
-
uno e un solo
spazio
-
quantita' disponibile
(numero intero)
E' dato, inoltre,
un secondo file neces.txt
relativo alla quantita' necessaria degli ingredienti. Più precisamente,
ogni riga contiene, nell'ordine:
-
nome ingrediente
(stringa di 30 caratteri al piu', senza spazi intermedi)
-
uno e un solo
spazio
-
quantita' necessaria
(numero intero)
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 dispo.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 neces.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
i codici corrispondenti agli ingredienti disponibili in quantita' inferiore
a quella necessaria e, con tali codici, costruisca una lista di interi.
Si chiami tale lista da_comprare;
[si visualizzi
la lista da_comprare]
-
utilizzi una procedura
void
cosamanca(list l),
specificatamente progettata, che chieda all'utente di introdurre un codice
e stampi a video un messaggio relativo alla presenza/assenza nella lista
l dell'ingrediente corrispondente al codice.
[si visualizzino
i risultati dell'invocazione della procedura sulla lista da_comprare]
-
FACOLTATIVO. A
partire dal vettore ingre_dispo,
si costruisca una lista (ordinata in ordine crescente 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).