APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

Documenti analoghi
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2014

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IV Indice

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Esercizio. Vogliamo scrivere delle funzioni che ci permettano di estrarre delle informazioni statistiche da un vettore (array) di dati:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Introduzione alla Programmazione in Java attraverso un esempio commentato

Programmazione Orientata agli Oggetti in Linguaggio Java

L Allocazione Dinamica della Memoria

Laboratorio di Programmazione I Compitino (Vers. C)

INFORMATICA E PROGRAMMAZIONE PROF. M. GIACOMIN ESPERIENZA IN AULA: ELABORAZIONE DI IMMAGINI A COLORI IN LINGUAGGIO C

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

Esercizio 1 Liste: calcolo perimetro di un poligono

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

PROGRAMMAZIONE: Le strutture di controllo

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

Lettura da tastiera e scrittura su monitor

ESERCITAZIONE MATLAB

Descrizione del nuovo sistema di reportistica degli esiti della valutazione della didattica

Il linguaggio C. Notate che...

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 17/2/2009

L accesso ai dispositivi esterni (tastiera, monitor, file,...) viene gestito mediante canali di comunicazione.

Variabili e Istruzioni

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Alberi binari e alberi binari di ricerca

Il programma OCTAVE per l insegnamento dell algebra lineare nella Scuola Secondaria p. 1

Appunti di Excel per risolvere alcuni problemi di matematica (I parte) a.a

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Programmazione I. 11 gennaio Considerate la seguente gerarchia di classi (rappresentata mediante un diagramma UML): +f(double x):

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

Manuale di istruzioni per l inserimento dei dati delle CLASSI NON CAMPIONE

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

4 GLI ARRAY E LE STRINGHE

Esercizi C su array e matrici

INDICE. Vista Libretto Pt. Coordinate 2. Inserimento e modifica dei punti di coordinate note 4. Inserimento e modifica dei punti di orientamento 5

ingresso/uscita da file

Scrittura formattata - printf

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Strutture Dati. Elisa Marengo. Università degli Studi di Torino Dipartimento di Informatica. Elisa Marengo (UNITO) Strutture Dati 1 / 16

3. Terza esercitazione autoguidata: progetto gestione voli

I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore

Guida Tecnica di compilazione

Spazio riservato ai docenti

Fondamenti di Informatica T-1 Modulo 2

Linguaggio C - sezione dichiarativa: costanti e variabili

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Esercitazione 3. Espressioni booleane I comandi if-else e while

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Stringhe e allocazione dinamica della memoria

CORSO DI INFORMATICA GENERALE. Università degli Studi di Bergamo

Un grafico utilizza i valori contenuti in un foglio di lavoro per creare una rappresentazione grafica delle relazioni esistenti tra loro;

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003

Linguaggio C: i file

Definizione di metodi

Informatica B

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

EXCEL: FORMATTAZIONE E FORMULE

Definizione di classi

GUIDA APPLICATIVA NUMERAZIONE UNITARIA INTERMEDIARIO

Geometria BATR-BCVR Esercizi 9

Programmazione I - Laboratorio

Analisi Matematica I per Ingegneria Gestionale, a.a Scritto del secondo appello, 1 febbraio 2017 Testi 1

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Esercizi di Matematica di Base Scienze biologiche e Scienze e Tecnologie dell Ambiente

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Array multidimensionali e stringhe

Le direttive del Preprocessore

Raccolta degli esercizi svolti in aula

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Tipi di linea. Tipi di Linea - R.Virili 1

Fondamenti di Informatica T-1 Modulo 2. Obiettivo di questa esercitazione. Files Allocazione dinamica della memoria

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Laboratorio di Programmazione 1 [Java]

Excel come foglio di calcolo. Altri Grafici con Excel Istogrammi, grafici a torta

Manuale d utilizzo. Indice:

Gestione Tesi Online

Gestione di files Motivazioni

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Files in C++ Fondamenti di Informatica. R. Basili. a.a

EXCEL: FORMATTAZIONE E FORMULE

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Fondamenti di Informatica T-1 Modulo 2

Matricola Nome Cognome Aula Fila (dalla cattedra) Posto (dalla porta)

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

DOTTORATI DI RICERCA GUIDA ALL ISCRIZIONE ONLINE AL CONCORSO D AMMISSIONE

Excel Base- Lezione 3. Barbara Pocobelli Estav Nord Ovest. Il comando Trova

Obiettivi di questa esercitazione

Manuale versione Mobile (Smartphone Tablet)

Definizione di metodi in Java

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

I FACOLTÀ DI INGEGNERIA - POLITECNICO DI BARI Corso di Laurea in Ingegneria Meccanica (corso A) A.A , Esercizi di Geometria analitica

Transcript:

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area. 1 2 Esercizio 2 2 Prima versione del main: lettura dei dati dal file. 2 2 Esercizio 3 3 Seconda versione del main: visualizzazione dei dati. 3 Punti: 6. 3 Esercizio 4 4 Ultima versione del main: statistiche. 4 4 Istruzioni per la consegna 5 Avvertenza. Il tema d esame richiede lo sviluppo di un singolo programma che computa alcuni dati relativi a un insieme di triangoli nel piano memorizzati in un file. I triangoli sono acquisiti dal file dati.txt allegato al tema d esame. Svilupperete alcune funzioni ausiliarie nel primo esercizio. Integrerete poi le funzioni ausiliarie in un unico programma finale, che consisterà di un unico file. (Il tema d esame richiede esplicitamente l implementazione di alcune funzioni ausiliarie. È comunque sempre ammissibile aggiungere altre funzioni ausiliarie qualora lo riteniate opportuno per una migliore implementazione della vostra soluzione.) Si raccomanda di leggere interamente il tema d esame prima di cominciare a scrivere le soluzioni dei singoli esercizi, in modo da avere chiaro l obiettivo finale. Esercizio 1 Definizione dei tipi P e T, e calcolo dell area. Ultima revisione: 16 giugno 2015. 1

2 V. MARRA Usando typedef e struct, definite i nuovi tipi P e T i cui valori rappresentano, rispettivamente, punti e triangoli del piano cartesiano. Per i valori delle coordinate usate il tipo double. I triangoli sono rappresentati dai loro tre vertici. Dichiarate e implementate poi una funzione di nome area che accetti in ingresso un puntatore a T e restituisca in uscita il valore dell area del triangolo in argomento. Per il calcolo dell area, implementate una funzione ausiliaria det di prototipo appropriato, che accetti in ingresso un array di double di dimensione 3 3, e restituisca in uscita il valore del determinante della matrice. (Suggerimenti. Per il calcolo del determinante, potete semplicemente scrivere il codice che implementa lo sviluppo di Laplace della matrice. Si noti bene che la funzione det è dedicata al calcolo del determinante di matrici 3 3: non si richiede un implementazione della funzione parametrica nella dimensione della matrice, che sarebbe notevolmente più difficile.) Usate poi la formula matriciale per il calcolo dell area dei triangoli piani. Se i vertici del triangolo sono i tre punti a = (x 1, y 1 ), b = (x 2, y 2 ), c = (x 3, y 3 ) del piano cartesiano, l area del triangolo è data dalla metà del valore assoluto del determinante x 1 y 1 1 x 2 y 2 1 x 3 y 3 1 Per il calcolo del valore assoluto di valori double potete usare la funzione double fabs(double) del file di intestazione math.h, oppure implementare il calcolo direttamente. Prima di proseguire con gli altri esercizi, è opportuno che vi assicuriate che la vostra implementazione sia corretta fino a questo punto. Scrivete una funzione main per testare le funzioni che avete scritto. Più in generale, cercate di testare la vostra soluzione a ciascun esercizio prima di andare avanti. Esercizio 2 Prima versione del main: lettura dei dati dal file. Scrivete una funzione main che accetti in ingresso dalla riga di comando il nome di un file. Se non vi sono argomenti sulla riga di comando, il programma termina con un messaggio d errore appropriato. Se vi è almeno un argomento, il programma tenta di aprire il file dal nome corrispondente in modalità di lettura. Se l apertura non riesce, il programma termina con un messaggio d errore appropriato. Se invece l apertura avviene correttamente, il programma assume che il file sia composto esattamente nel modo seguente: la prima riga contiene un numero intero n > 0 seguito dal ritorno a capo. Poi, il file contiene n righe di dati, ciascuna delle quali rappresenta un triangolo dato dall elenco dei suoi tre vertici nel formato: (x1,y1) (x2,y2) (x3,y3)

PROGRAMMAZIONE 1 APPELLO SCRITTO DEL 15.VI.2015 3 Figura 1. Esempio di esecuzione (Esercizio 3). dove x i e y i sono valori double, per i = 1, 2, 3. Ciascuna riga è terminata dal ritorno a capo. (Suggerimenti. Usate fscanf per leggere i valori dal file. Assicuratevi di trattare i ritorni a capo che terminano ciascuna riga del file in modo opportuno.) Il programma dichiara un array di triangoli della dimensione appropriata, e lo inizializza leggendo i dati relativi agli n triangoli dal file. Fatto ciò, il programma visualizza l elenco dei triangoli letti, e termina. Il programma deve chiudere il file non appena non è più necessario tenerlo aperto. Nell implementare il programma, dichiarate, implementate e usate opportunamente la funzione ausiliaria legge_tr(t* t, FILE* f) che legge dal file f passato in argomento i dati corrispondenti a un singolo triangolo, e li memorizza nel triangolo t. Assumete che f sia già aperto in lettura. Esercizio 3 Seconda versione del main: visualizzazione dei dati. Punti: 6. Ampliate la vostra prima versione della funzione main (Esercizio 2) di modo che il programma, prima di terminare, visualizzi sul terminale l elenco dei triangoli letti da file, in un formato simile a quello della Fig. 1. Dovrete dichiarare, implementare e usare opportunamente le due funzioni ausiliarie seguenti. void visualizza_ar(int n, T* tr) visualizza l array di triangoli di dimensione n in argomento, utilizzando visualizza. Se il triangolo i-esimo non è un vero triangolo (vedi sotto per i dettagli), aggiunge una nota per avvisare l utente. visualizza visualizza il triangolo passato in argomento. Completate opportunamente il prototipo della funzione. Può accadere che tre punti a = (x 1, y 1 ), b = (x 2, y 2 ), c = (x 3, y 3 ) del piano cartesiano non possano essere i vertici di un triangolo. Ciò avviene esattamente quando i punti non sono affinemente indipendenti, ossia quando sono allineati. Equivalentemente, ciò avviene esattamente quando l area del triangolo in questione, calcolata

4 V. MARRA Figura 2. Esempio di esecuzione (Esercizio 4). come nell Esercizio 1, è zero. Per accertarsi del fatto che il triangolo corrente sia davvero un triangolo, la funzione visualizza_ar usa una funzione ausiliaria affind di cui dovrete completare opportunamente il prototipo, che accetta in ingresso un puntatore a triangolo, e restituisce 1 se il triangolo è un vero triangolo, e 0 altrimenti. La funzione affind, a sua volta, utilizza la funzione scritta nell Esercizio 1 per il calcolo dell area di un triangolo. Esercizio 4 Ultima versione del main: statistiche. Modificate la funzione main scritta nell Esercizio 3 di modo che il programma accetti una seconda opzione dalla riga di comando, oltre al nome del file in ingresso. Dopo aver visualizzato i dati come nell Esercizio 3, il programma analizza l eventuale secondo parametro presente sulla riga di comando. Se non vi è un secondo parametro presente, il programma termina. Se vi è un secondo parametro ed esso comincia con la stringa -s o -S, il programma computa e visualizza alcune semplici statistiche come specificato di seguito, e termina. Altrimenti, il programma termina. Le statistiche da calcolare e visualizzare sono l elenco delle aree dei triangoli precedentemente letti dal file, la media aritmetica delle aree e il numero di un triangolo di area massimale. L elenco delle aree deve omettere i triangoli di area nulla. La media aritmetica include invece anche i valori nulli. Per calcolare questi dati dichiarate e implementate due funzioni ausiliarie. La prima, di prototipo double media(double *, int) riceve in ingresso un array di double come primo parametro, la sua dimensione come secondo parametro, e restituisce la media aritmetica dei valori dell array. La

PROGRAMMAZIONE 1 APPELLO SCRITTO DEL 15.VI.2015 5 seconda, di nome max e prototipo appropriato, calcola l indice di un elemento di valore massimale di un array di double. La Fig. 2 riporta un esempio di esecuzione del programma. Istruzioni per la consegna Funzioni da consegnare (in un unico file sorgente). main() det() area() affind() legge_tr() visualizza() visualizza_ar() media() max() Sito per la consegna: Tutte le eventuali altre funzioni ausiliarie che abbiate scritto. https://upload.mat.unimi.it Autenticarsi con le proprie credenziali di posta elettronica d ateneo. Consegnare solo il codice sorgente (file *.c), non l eseguibile. (V. Marra) Dipartimento di Matematica Federigo Enriques, Università degli Studi di Milano, via Cesare Saldini, 50, I-20133 Milano E-mail address: vincenzo.marra@unimi.it