Fondamenti II (INF) Sistemi Informativi I(TLC) Prova di programmazione in C del 28.1.1998 Esercizio n.1 Si scriva in linguaggio C un programma in grado di fornire ricerche di costo logaritmico ad una base dati, secondo due chiavi di accesso. I dati sono contenuti in un file testo, che riporta informazioni relative ad un insieme di persone, per ognuna delle quali sono riportate, su 3 righe successive: Cognome e nome data di nascita (formato: gg/mm/aa) Numero di matricola (5 caratteri) Il programma, dopo aver acquisito i dati dal file (di cui non si conosce la dimensione), fornisca ricerche di costo logaritmico secondo due possibili criteri: sono dati cognome.e nome. e’ dato il numero di matricola. Esercizio n.2 Sono dati due insiemi di movimenti di cassa, rispettivamente acquisti e vendite, di cui sono riportati, su un file, i relativi importi. Il file contiene un insieme di interi compresi tra -1000 e +1000 (separati da spazi o fine riga). Gli interi positivi sono relativi a vendita, i negativi ad acquisti. E’ noto che gli interi non sono in unmero superiore a 100. Si scriva un programma in grado di trovare una sequenza ottima di acquisti e vendite. Si considera ottima la sequenza che, partendo con un importo in cassa pari a C0, consente di minimizzare lo scarto quadratico medio dell’importo in cassa dopo ogni movimento, rispetto a C0. Sia Ci l’importo in cassa dopo l’i-esimo movimento della sequenza ottima, e sia N il numero totale di movimenti. Si desidera minimizzare la sommatoria S = i=1,N((Ci-C0)2) Si noti che lo scarto quadratico medio è dato da S/N. Essendo questo costante minimizzare S equivale a minimizzare lo scarto. N.B. L'efficienza della soluzione proposta in termini di velocita' e occupazione di memoria sara' oggetto di valutazione. E' consentito utilizzare chiamate a funzioni standard di ordinamento per vettori, inserzione/estrazione relative a FIFO, LIFO, liste ed altre strutture dati, considerate come esterne. Di queste e' richiesto il prototipo, la conoscenza dei tipi di dato usati come parametri, ed una breve spiegazione della funzione realizzata (es. un commento in "C"). Tali funzioni dovranno essere incluse nella versione del programma sottoposta a verifica