Corso di Laboratorio di Informatica L-A
Appello d'Esame del 14 Gennaio 2002
Turno 2 - Compito A
È dato
un file di testo TAVOLI.TXT
che contiene informazioni sui tavoli di una birreria, un tavolo per riga.
Più precisamente, ogni riga contiene, nell'ordine:
-
codice
del tavolo (non più di 30 caratteri, senza spazi intermedi)
-
uno e un solo
spazio
-
numero
di posti (numero intero)
-
uno e un solo
spazio
-
carattere
che indica l'eventuale prenotazione. Si supponga che i possibili valori
siano solo 'p' (prenotato) e 'n' (non prenotato).
Si chiede di scrivere
un programma C che, dopo aver definito una struttura tavolo
nel modo appropriato rispetto a quanto specificato sopra:
-
legga i dati dal
file e metta in un array di tavolo
di nome
prenotati
soltanto i record relativi ai tavoli prenotati;
[si mostri
a video l'array così costruito]
-
a partire dal
vettore prenotati,
costruisca una lista di interi i cui elementi sono i posti
dei tavoli del vettore.
[si visualizzi
la lista costruita]
-
richieda all'utente
di inserire un numero intero che rappresenti il numero minimo
di posti di un tavolo min;
-
utilizzi una funzione
double
frazione(lista l, int min),
specificatamente progettata, che restituisca la frazione dei tavoli della
lista con un numero di posti maggiore o uguale a min;
-
(OPZIONALE) a
partire dall'array prenotati
costruisca un'ulteriore lista di strutture
(i cui campi sono il codice del tavolo e il numero
di posti). Si progetti una procedura void
stampa_tavoli(list l, int nposti),
che visualizzi il codice dei tavoli con un numero di posti inferiore a
nposti.
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).