Esempi seconda prova

Una compagnia aerea utilizza un archivio informatico nel quale vengono memorizzate le
informazioni relative a tutti gli acquisti di posti per tutti i voli giornalieri della compagnia.
Si suppone che ciascun volo sia codificato tramite una sequenza di 8 caratteri.
Per ciascun volo si deve memorizzare: il numero di posti disponibili e l’elenco dei posti acquistati.
A tal fine viene utilizzata una struttura dati costituita da un ADT Lista, che chiameremo archivio.
Ogni elemento dell’ADT Lista contiene i seguenti campi:
 Codice Volo, Stringa di 8 caratteri
 Numero dei posti disponibili, unsigned int
 ADT ABR dei posti già acquistati
Ogni ADT ABR contiente elementi composti da:
 Codice Fiscale del cliente che ha acquistato il posto, 1 Stringa da 16 caratteri
 Cognome, Nome, Indirizzo e Recapito telefonico del cliente, tutte strighe di lunghezza
arbitraria.
Si suppone che:
 l’ADT Lista e ciascun ADT ABR siano realizzati con puntatori
 l’inserimento in ciascun ADR ABR avviene per Codice Fiscale
 l’ADT Lista sia ordinata per Codice Volo (ordine strettamente crescente)
Codificare in C:
 le strutture dati utilizzate e le funzioni primitive necessarie al compito.
 una funzione che inserisce un nuovo codice volo, se esso non esiste nell’archivio. La funzione
deve controllare che il codice volo che si vuole inserire, non esista già. Nel caso in cui il codice
volo non esiste, deve essere inserito il codice insieme al numero di posti disponibili e deve essere
inizializzata l’ADT ABR dei posti acquistati.
 una funzione che riceve un nuovo elemento (Codice Fiscale, Cognome, Nome, etc.) e il codice
di volo; se il codice volo non esiste, la funzione deve richiamare la precedente funzione per la
creazione del volo. Se il volo invece esiste, allora la funzione deve controllare il numero di posti
disponibili del volo. Se tale numero è maggiore di zero, la funzione deve effettuare l’inserimento
dell’elemento nell’ADT ABR degli acquisti; in tal caso, il numero di posti disponibili deve
essere decrementato di uno, dopo aver fatto l’inserimento nell’ADT ABR.
 Il main che richiama le precedenti funzioni
Cognome:
Nome:
Matricola:
In una Pinacoteca si vuole realizzare il Catalogo per una mostra. Ogni qualvolta si organizza una
mostra viene caricata in memoria centrale una struttura dati contenente l’organizzazione
dell’esposizione. Ogni esposizione è organizzata su un certo numero di sale ed in ogni sala sono
esposti un certo numero di opere.
Lo schema delle sale viene rappresentato mediante una lista concatenata (con puntatori) in cui
ciascun nodo contiene le seguenti informazioni:
 Numero della sala
 ABR delle opere esposte nella sala.
In ogni nodo dell’ABR sono contenute le seguenti informazioni
codice dell’opera (UN INTERO)
titolo dell’opera (UNA STRINGA DI 30 CARATTERI)
autore (UNA STRINGA DI 30 CARATTERI)
anno di creazione dell’opere (UN INTERO)
e l’ABR è ordinato in base al codice dell’opera.
Lo studente implementi un programma C che preveda le seguenti funzionalità:
1. Inserimento di una nuova sala vuota nella struttura dati
2. Inserimento di una nuova opera in una sale esistente fornendo in ingresso il numero della
sala e le informazioni relative all’opera. (Verificare l’esistenza della sale e l’univocita del
codice dell’opera)
3. Stampa a video l’elenco delle opere di una data sala (si fornisca in ingresso il numero della
sala
4. Stampa a video il catalogo della mostra consistente nell’elenco delle opere divise per sala
5. Stampa a video di tutte le opera di un dato anno
6. Dato il nome di un autore stampa l’elenco delle sale dove sono esposte opera di tale autore
7. Stampa l’elenco delle opere più antiche
Un gruppo di appassionati di aeromodellismo desidera effettuare una gara in cui esibire i modelli
realizzati. A tale scopo, raccoglie per ogni partecipante le seguenti informazioni:
1) Nome e cognome del partecipante
2) Categoria di partecipazione all’evento (due categorie possibili: aeromodellismo statico o
dinamico)
3) L’elenco dei modelli che prendono parte alla gara (sono ammessi piu velivoli per
partecipante)
Le informazioni relative al modello includono un codice identificante, una tipologia
(aereo/elicottero) Il peso in Kg e la cilindrata del motore (in cc)
Per modellare il sistema viene utilizzata una lista di partecipanti e per ciascun partecipante l’elenco
dei modelli e memorizzato in un albero binario di ricerca ordinato per codice identificativo.
Il sistema deve permettere le operazioni di seguito descritte:
1) Iscrizione di un nuovo velivolo. Tale opzione deve prevedere l’iscrizione di un nuovo
velivolo associato ad un partecipante. Se il partecipante è gia iscritto il velivolo verrà
aggiunto all’elenco (ABR) se il partecipante non risulta iscritto va aggiunto prima il
partecipante alla lista dei partecipanti e quindi il velivolo all’elenco associato al
partecipante.
Garantire l’unicità del codice identificativo
2) Calcolo e visualizzazione delle percentuali di aerei e di elicotteri rispetto al totale di
partecipanti
3) Creazione della liste di velivoli iscritti includente solo i dati del velivolo
4) La visualizzazione dell’elenco di tutti gli elicotteri con peso inferiore ad uno dato e
cilindrata pari ad un valore dato
5) Cancellazione di un velivolo iscritto (se è l’unico di un dato partecipante viene cancellato
anche il partecipante) fornendo in ingresso il codice identificativo.
Si vuole realizzare un programma per la gestione di un magazzino. I dati che bisogna archiviare
riguardano le vendite effettuate per ciascun prodotto.
Ogni prodotto è caratterizzato da un codice del prodotto (costituito da una stringa di 6 caratteri) da
una descrizione (una stringa di 20 caratteri) e da una giacenza (un intero >=0)
Ogni vendita è caratterizzata dal codice del prodotto, dal numero di fattura, e dal numero di pezzi
venduti.
I dati sono immagazzinati in una lista ordinata per codice di prodotto. Ciascun nodo della lista
contiene i dati relativi al prodotto e una coda contenente i dati relativi alle vendite effettuate per tale
prodotto.
Ogni volta che si effettua una vendita e necessario ricercare il codice del prodotto e controllare la
disponibilità del prodotto e quindi se il numero di pezzi che si devono vendere sono disponibili
decrementare la giacenza ed aggiungere alla coda delle vendite i dati della vendita.
I dati relativi alla giacenza vengono memorizzati in un file testo Giacenza.txt cosi organizzato:
codice prodotto
descrizione
numero di pezzi
In un secondo file testo Vendite.txt sono memorizzate le vendite effettuate nel seguente formato:
codice prodotto
numero fattura
numero pezzi
Lo studente implementi un programma C che consenta il
1. Inserimento nella struttura in memoria centrale di un nuovo prodotto con la sua giacenza
2. Inserimento nella struttura in memoria centrale una nuova vendita previa verifica
dell’esistenza del prodotto e della giacenza
3. Stampa l’elenco dei file Giacenza.txt e Vendite.txt
4. Salvataggio delle informazioni contenute in memoria centrale sui file Giacenza.txt e
Vendite.txt
5. Calcolo delle medie dei numeri di pezzi venduti per ciascun prodotto
6. Stampa l’elenco delle vendite effettuate per ciascun prodotto
7. Cancellazione delle fatture di un prodotto contenenti un numero di pezzi maggiore di 10
Si vuole realizzare un programma per la gestione di un dato aeroporto. Tutti i voli infine sono
memorizzati in una lista. In particolare, ogni volo è caratterizzato da: codice volo (stringa 8
caratteri), capienza residua passeggeri (intero). Ogni passeggero è caratterizzato da: cognome,
nome, età
Per ogni volo, inoltre, occorre memorizzare la lista dei passeggeri. .La lista dei passeggeri di un
dato volo è ordinata per cognome, quella delle merci lo è in base al codice. I dati dei voli sono
memorizzati in un file di testo Voli.txt così organizzato:
codice volo
numero posti liberi (iniziale)
I dati relativi ai passeggeri vengono memorizzati in un file di testo Pass.txt cosi organizzato:
cognome
nome
età
codice volo
I dati nei file dei passeggeri non sono ordinati.
Lo studente implementi un programma C che consenta le seguenti operazioni:
8. Inserimento nella struttura in memoria centrale di un nuovo volo fornendo il codice volo e
il numero di posti disponibili.
9. Inserimento nella struttura in memoria centrale di un nuovo passeggero in un volo
esistente, fornendo da tastiera tutti i dati (compreso il codice del volo); anche in questo
caso, effettuare i controlli necessari.
10. Inserimento nella struttura in memoria centrale di tutti i voli, caricandoli dal file Voli.txt
11. Dato il codice di un volo, inserimento di tutti i passeggeri di quel volo nella relativa lista
ordinata, prelevandoli dal file Pass.txt (decrementare opportunamente il numero di posti del
volo per ogni inserimento)
12. Stampa a video del contenuto della struttura in memoria centrale (voli + passeggeri)
13. Salvataggio delle informazioni contenute in memoria centrale sui file Voli.txt e Pass.txt
14. Calcolo dell’età media dei passeggeri per ciascun volo
15. Cancellazione di un passeggero da un volo