Corso di Laboratorio di Informatica L-A
Esame dell'11 luglio 2002
Compito 3
È 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
al 50% di quella necessaria (cioe' quantita' disponibile < quantita'
necessaria * 0.5) e, con tali codici, costruisca una lista di interi.
Si chiami tale lista urgente;
[si visualizzi
la lista urgente]
-
utilizzi una procedura
void
seleziona(list l),
specificatamente progettata, che chieda all'utente di introdurre un codice
e stampi a video tutti gli elementi della lista diversi da tale codice.
[si visualizzino
i risultati dell'invocazione della procedura sulla lista seleziona]
-
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).