Corso di Laboratorio di Informatica L-A
Appello d'Esame del 14 Gennaio 2002
Turno 2 - Compito B
È 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
liberi
soltanto i record relativi ai tavoli non prenotati;
[si mostri
a video l'array così costruito]
-
a partire dal
vettore liberi,
costruisca una lista ordinata di interi i cui elementi sono
i posti dei tavoli del vettore.
[si visualizzi
la lista costruita]
-
richieda all'utente
di inserire due numeri interi che rappresentano il numero minimo
e massimo di posti di un tavolo min,
max;
-
utilizzi una funzione
int
conta(lista l, int min, int max),
specificatamente progettata, che restituisca il numero dei tavoli della
lista con un numero di posti compreso nell'intervallo [min,max];
-
(OPZIONALE) a
partire dall'array liberi
costruisca un'ulteriore lista di strutture
(i cui campi sono il codice del tavolo e il numero
di posti). Si progetti una procedura void
filtra(list l, int min, int max),
che elimini dalla lista i tavoli con un numero di posti compreso nell'intervallo
[min,max].
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).