testo esame in formato PDF
Transcript
testo esame in formato PDF
Fondamenti di Programmazione CdL in Ingegneria Informatica, Elettronica e delle Telecomunicazioni a.a. 2015/2016 Docente: Prof. Andrea Prati Prova del 15 giugno 2016 Istruzioni per l’esame in laboratorio Scrivere un programma in linguaggio C (singolo file sorgente chiamato <matricola>.c) che abbia il comportamento descritto nel seguito. Il tempo a disposizione è di 120 minuti. Al termine del tempo gli elaborati salvati su Z:\ verranno raccolti automaticamente dal sistema di laboratorio. Eventuali documenti sono disponibili in P:\Prati. Si consiglia di copiare i file in Z: Durante la prova non è possibile uscire (ad esempio, per andare in bagno). Nel caso di turni multipli d’esame non è neanche possibile uscire anticipatamente nel caso ci si voglia ritirare o consegnare in anticipo. Testo dell’esame Il programma da realizzare dovrà simulare la gestione di flotte di camion per le consegne in un magazzino nell’arco di 8 ore di un giorno. I camion sono caratterizzate delle seguenti informazioni: Tipologia della merce trasportata, memorizzata mediante un carattere che può assumere il valore ‘A’ per indicare il trasporto di alimentari, ‘E’ per indicare il trasporto di elettrodomestici e ‘M’ per indicare il trasporto di mobili Orario di arrivo al magazzino, indicato come un intero da 1 a 480 minuti (8 ore da 60 minuti) Tempo necessario per lo scarico della merce, indicato da un intero rappresentante i minuti necessari per lo scarico Quantità di materiale da scaricare, come intero Il magazzino è organizzato in un certo numero di “portali”. Ciascuno di essi è caratterizzato della seguenti informazioni: Tipologia della merce che immagazzina, sempre come carattere e con valore ‘A’, ‘E’ o ‘M’ Capacità massima, memorizzata come numero intero positivo, maggiore o uguale a 100 Capacità residua (cioè quantità di merce che può ancora immagazzinare), memorizzata come numero intero positivo Un puntatore al camion attualmente servito Il programma dovrà quindi: 1. Definire tre code A, E e M mediante liste singolarmente concatenate che devono contenere i camion in attesa di essere serviti. Ogni nodo della coda deve contenere i dati del camion come sopra-riportati. Notare che il campo tipologia della merce è superfluo, ma lo riportiamo comunque. 2. Richiedere all’utente di indicare il numero di “portali” del magazzino ed allocare dinamicamente un array di record con i campi sopra-indicati per ciascun portale. Per ogni portale si dovrà chiedere all’utente di indicare la tipologia della merce che immagazzina e la capacità massima. Si controlli che l’utente inserisca dati corretti (numero di portali >=1, tipologia della merce che sia o ‘A’, o ‘E’ o ‘M’ e capacità massima >=100). 3. Iniziare iterativamente un ciclo per contare i minuti ipotizzando una giornata da 8 ore (quindi minuti da 1 a 480). Ad ogni iterazione (minuto), il programma deve stampare il minuto corrente e: Tempo MASSIMO a disposizione per la soluzione: 120 minuti a. Generare un numero casuale per determinare se arriva un nuovo camion. Il numero casuale da generare dovrà essere compreso tra 0 e 100, e nel caso il valore sia minore o uguale a 40, un nuovo camion arriva. Nel caso di arrivo di nuovo camion, deve: i. generare un terzo numero casuale tra 1 e 20 che indica il numero di minuti necessari allo scarico del materiale ii. generare un quarto numero casuale tra 1 e 100 che indica la quantità di materiale da scaricare iii. generare un altro numero casuale tra 0 e 10: se il numero è pari, il camion trasporta alimentari, altrimenti se il numero è multiplo di 3 trasporta mobili, altrimenti (tutti i casi non indicati sopra) trasporta elettrodomestici. iv. stampare a video le informazioni del camion appena arrivato v. accodare il camion nella coda corrispondente b. per ogni portale, qualora vi siano camion in scarico in un certo portale, deve: i. diminuire il tempo di scarico del camion ii. se il tempo di scarico arriva a zero, liberare il portale e stampare a video il fatto di aver finito di servire un camion c. Se ci sono portali liberi o liberati nel precedente punto e la coda corrispondente non è vuota, deve: i. prelevare il prossimo camion dalla coda, verificando però che la quantità di materiale da scaricare sia minore o uguale alla capacità residua del magazzino. Se così non è il programma deve proseguire con il prossimo portale. Se nessun portale del tipo corretto ha la capacità necessaria per la merce da scaricare il camion viene lasciato in coda. ii. inserire l’eventuale camion disponibile nel portale corrispondente iii. stampare a video di aver servito il camion d. Generare un numero casuale tra 1 e 10 e aumentare la capacità residua di tutti i portali di quella quantità (i portali vengono svuotati man mano dai magazzinieri, si suppone per semplicità tutti della stessa quantità ogni minuto). 4. Il programma deve anche tenere traccia del tempo medio di attesa dei camion e stamparlo a video. Il tempo di attesa si calcola come la differenza tra il tempo di arrivo del camion e il tempo di inserimento del camion all’interno di un portale. Tempo MASSIMO a disposizione per la soluzione: 120 minuti