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
© Copyright 2024 ExpyDoc