• Non ci sono risultati.

Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 5 luglio 2016

N/A
N/A
Protected

Academic year: 2021

Condividi "Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 5 luglio 2016"

Copied!
1
0
0

Testo completo

(1)

Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I

Prova scritta del 5 luglio 2016

Esercizio 1 (16 punti)

Si vuole realizzare, in linguaggio C, una piccola macchina calcolatrice programmabile, cioè in grado di eseguire una sequenza di calcoli scritta in un file.

La macchina sarà in grado di eseguire le quattro operazioni aritmetiche e gli operandi saranno esclusivamente numeri reali (eventuali numeri espressi come interi nel file di ingresso saranno convertiti in reali).

Inoltre, la macchina dispone di 100 celle di memoria dove memorizzare i dati. Al termine dell’esecuzione delle operazioni specificate nel file di ingresso il programma dovrà stampare i valori contenuti in tutte e sole le celle di memoria che sono state utilizzate.

Il formato del file di ingresso può essere dedotto dall’esempio a fianco.

I termini delle espressioni sono separati da uno o più spazi. Ogni riga contiene sempre una sola espressione sempre composta da un’assegnazione e un operatore aritmetico binario.

Si scriva un programma che riceva sulla riga di comando il nome di un file siffatto e stampi il risultato dell’elaborazione visualizzando, come detto sopra, tutte e sole le celle di memoria che sono state utilizzate.

Relativamente all’esempio, il programma deve stampare quanto riportato nel riquadro a fianco.

Suggerimento: si scriva la funzione double valore (...) che riceve come argomento una stringa rappresentante un operando (indifferentemente un numero o una cella di memoria) e la rappresentazione delle celle di memoria, ne interpreta il formato e ne restituisce il valore.

Esercizio 2 (14 punti)

Dovete organizzare il trasporto dei vostri amici per andare a una festa fuori città. Alcuni dispongono della propria auto e si sono già accordati con altri per andare insieme, ma in molte auto restano ancora posti liberi. Inoltre, alcuni amici non dispongono di auto propria e non hanno ancora trovato un passaggio. Scopo dell’esercizio è organizzare il trasporto in modo che nessuno resti a piedi (se ci sono abbastanza auto), oppure segnalare la necessità di trovare altri mezzi di trasporto.

Il file di testo con_auto.dat contiene l’elenco delle persone che si sono già organizzate. Ogni riga corrisponde ad un’auto e contiene l’indicazione dei posti totali disponibili seguita dall’elenco delle persone già assegnate a tale auto. Per esempio:

(4) mario, lucia;

(5) pier giuseppe, maria stefania, giulia, filippo alberto, luciana;

(5) francesca, gian mario, pier luigi francesco;

(4) antonella;

Si assuma che non ci siano omonimie e che il file non contenga errori, né nel formato né nel numero di persone in relazione al numero di posti disponibili.

Un secondo file di testo, di nome senza_auto.dat contiene i nomi, uno per riga, degli amici senza auto e ancora senza un passaggio. Si veda l’esempio a fianco.

Il programma deve generare il file di testo passaggi.dat, contenente gli elenchi delle

persone che condivideranno ciascuna auto, assegnando in ordine tutti i posti liberi (si trascuri la possibilità di rendere più uniforme la distribuzione dell’occupazione dei posti).

Relativamente all’esempio di cui sopra, il programma dovrà generare il seguente file:

mario, lucia, maria, luca;

pier giuseppe, maria stefania, giulia, filippo alberto, luciana;

francesca, gian mario, pier luigi francesco, mario alberto;

antonella;

Se nel file senza_auto.dat sono presenti più persone dei posti disponibili, il programma deve segnalare un errore.

m[7] = 2.5 * 4 m[12] = -1.4 + m[7]

m[12] = m[12] - 2.0 m[0] = m[12] / m[7]

m[0] = 0 - m[0]

m[0] = -0.66 m[7] = 10 m[12] = 6.6

maria;

luca;

mario alberto;

Riferimenti

Documenti correlati

Si scriva una funzione in linguaggio C che riceva come argomenti un vettore di stringhe, contenenti ciascuna il nome di un file del tipo sopra descritto, e un

Si scriva una funzione che riceva come argomenti il nome del file di equivalenze sopra descritto, il nome di un file di grandezze (con i punti interrogativi) e il nome di un file

Si scriva una funzione in linguaggio C che riceva come argomenti il puntatore a un file di testo nel formato sopra descritto (il file è quindi già stato aperto dalla funzione

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file di dizionario nel formato dell’esempio sopra riportato e il nome di un file

Si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di due file come quelli sopra descritti e stampi il numero delle repliche

Poiché gli identificatori (numeri) delle tessere sono univoci e nella griglia è presente una sola posizione vuota, ogni mossa può semplicemente essere indicata

Per fare questo, si scriva un programma in linguaggio C che riceva sulla riga di comando il nome di un file come sopra descritto e stampi l’elenco dei

Successivamente, per ogni cifra del tentativo non ancora utilizzata si cerca lo stesso valore tra le cifre non ancora utilizzate del numero segreto e, se lo si trova,