Traccia C. Spazio Riservato alla Commissione Esercizio 2 (10 punti)

Documenti analoghi
Seconda Prova Intracorso di Fondamenti di Informatica e Programmazione 04/12/2017

Seconda Prova Intracorso di Fondamenti di Informatica e Programmazione 04/12/2017

Traccia B. Spazio Riservato alla Commissione Esercizio 2 (10 punti)

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale

Appello di Fondamenti di Informatica 12/09/2017

Spazio Riservato alla Commissione. Seconda Prova Intracorso di Fondamenti di Informatica 15/06/2018

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale

I Appello di Fondamenti di Informatica 03/01/2017

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Totale

Fondamenti di Informatica

Traccia 2. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Totale

Fondamenti di Informatica

Traccia 4. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Totale

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Totale

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica A.A. 2017/18

Fondamenti di Informatica

Fondamenti di Informatica A.A. 2017/18

Fondamenti di Informatica

A.A. 2018/2019. Esercitazione 3 [Per Casa] Strutturazione del Codice Sorgente per la Risoluzione di Problemi mediante MATLAB

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica A.A. 2016/17

Fondamenti di Informatica

Fondamenti di Informatica

Fondamenti di Informatica A.A. 2016/17

Fondamenti di Informatica A.A. 2016/17

Fondamenti di Informatica A.A. 2016/17

A.A. 2018/2019 FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Cognome:, Nome: Matricola:

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Fondamenti di Informatica A.A. 2016/17

Fondamenti di Informatica

UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA

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

Prof. Marco Masseroli

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica (ICA-LC) [083668] Informatica B [079904]

Fondamenti di Informatica

A.A. 2018/2019. Fondamenti di Programmazione in MATLAB FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Descrittori di formato

Laboratorio di Matlab

15 Riepilogo di esercizi in MATLAB

Fondamenti di Informatica

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

Lezione 25: File Mercoledì 18 Novembre 2009

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Fondamenti di Informatica

Fondamenti di Informatica

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello del 8 Febbraio 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Metodi numerici con elementi di Programmazione A.A

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione

Laboratorio n 6 del Ing. Dario Cogliati

Fondamenti di Informatica

A.A. 2018/2019. Funzioni di Aggregazione e Raggruppamenti in SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Cognome:, Nome: Matricola: Spazio riservato alla commissione esaminatrice E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 Q1 Q2 Q3

Fondamenti di Informatica T-1

RIGA COLONNA MATRICOLA

Il presente plico contiene 3 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

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

CORSO DI LABORATORIO DI INFORMATICA

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Cognome:, Nome: Matricola:

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 3 Script e function

Introduzione all ambiente MATLAB. Richiami II. Analisi Numerica - A.A. 2007/08

Introduzione al MATLAB c Parte 3 Script e function

Fondamenti di Programmazione

Lezione 8: Stringhe ed array multidimensionali

Esercitazioni con GNU Octave

Introduzione ad Octave

strutture e file di testo/binari Esercizio - lettura/filtro/scrittura PEOPLE.TXT PARTNERS.DAT Due persone sono compatibili

Dinamica e Controllo dei Processi Energetici. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

Compito Basi di Dati. Tempo concesso: 90 minuti 15 Febbraio 2007 Nome: Cognome: Matricola:

Introduzione a Matlab

Transcript:

Nome Cognome Matricola Firma Esercizio 1 (10 punti) Traccia C Spazio Riservato alla Commissione Esercizio 2 (10 punti) Esercizio 3 (10 punti) Totale (30 punti) Seconda Prova Intracorso di Fondamenti di Informatica e Programmazione 04/12/2017 POSSIBILI SOLUZIONI Ingegneria Meccanica e Gestionale (Classe II) Dipartimento di Ingegneria Industriale (DIIn) Università degli Studi di Salerno Prof. Raffaele Pizzolante A.A. 2017/2018

Tipo Piatto M Piatti C <<menu.txt>> Piatto 1 Piatto 2 Piatto 3 Piatto 4 (indice 4) Piatto 5 (indice 5) <<comanda.txt>> Piatto Tipo Piatto Quantità Pizza 5.00 6.50 7.00 5.50 6.00 Panino 3.50 3.00 3.20 2.80 3.30 Bibita 4.00 3.50 2.50 2.00 3.00 Dessert (indice 4) 2.00 2.50 1.90 2.20 2.90 Parziale 1 (ind. 1) 4 1 3 Parziale 2 (ind. 2) 2 2 2 Parziale 3 (ind. 3) 3 2 1 Parziale 4 (ind. 4) 2 3 3 In questa prova verrà utilizzata una matrice M (menu) ed una matrice C (comanda) La matrice M rappresenta il menu di una pizzeria M(indice_tipo, indice_piatto) indica il prezzo unitario del piatto, specificato (sulle colonne) da indice_piatto, il cui tipo è specificato (sulle righe) da indice_tipo Esempio 1: M(2, 4) 2.80 indica che il prezzo unitario del Piatto 4 (colonna con indice 4), di tipo Panino (riga con indice 2) è pari a 2.80 Esempio 2: M(1, 2) 6.50 indica che il prezzo unitario del Piatto 2 (colonna con indice 2), di tipo Pizza (riga con indice 1) è pari a 6.50 La matrice C rappresenta la comanda in cui è indicato l ordine di un cliente. Ciascuna riga di C rappresenta un parziale dell ordine. In particolare, per ciascun parziale, è indicato il piatto ordinato, specificato dalla colonna con indice 1, del tipo, specificato dalla colonna con indice 2, ed è ordinato nella quantità, specificata dalla colonna con indice 3. Esempio (Parziale 1) C(1, 1) 4 (Piatto) C(1, 2) 1 (Tipo Piatto) C(1, 3) 3 (Quantità) Il parziale riguarda il Piatto 4 (valore di C(1, 1)) ed è di tipo Pizza (valore di C(1, 2)), ordinato nella quantità di 3 (valore di C(1, 2)). N.B. Le matrici contengono esclusivamente dati numerici

Tipo Piatto M Piatti C <<menu.txt>> Piatto 1 Piatto 2 Piatto 3 Piatto 4 (indice 4) Piatto 5 (indice 5) <<comanda.txt>> Piatto Tipo Piatto Quantità Pizza 5.00 6.50 7.00 5.50 6.00 Panino 3.50 3.00 3.20 2.80 3.30 Bibita 4.00 3.50 2.50 2.00 3.00 Dessert (indice 4) 2.00 2.50 1.90 2.20 2.90 Parziale 1 (ind. 1) 4 1 3 Parziale 2 (ind. 2) 2 2 2 Parziale 3 (ind. 3) 3 2 1 Parziale 4 (ind. 4) 2 3 3 Esercizio 1 Scrivere una funzione chiamata conto, che pra i seguenti 2 argomenti di input la matrice M (menu) la matrice C (comanda) La funzione dovrà restituire come argomento di output il conto, ovvero l importo complessivo dell ordine indicato nella comanda rappresentata dalla matrice C. Nel calcolo del conto, è necessario considerare la seguente promozione operata dalla pizzeria: Se è stata ordinata complessivamente una quantità di almeno 3 piatti di tipo Panino, allora verrà applicato uno sconto del 3% sul prezzo unitario di ciascun piatto di tipo Panino Esempio: conto(m,c) restituisce 35.9240 35.9240 rappresenta l importo del conto relativo all ordine riportato nella comanda C, il quale è pari a 35.9240

Tipo Piatto M Piatti C <<menu.txt>> Piatto 1 Piatto 2 Piatto 3 Piatto 4 (indice 4) Piatto 5 (indice 5) <<comanda.txt>> Piatto Tipo Piatto Quantità Pizza 5.00 6.50 7.00 5.50 6.00 Panino 3.50 3.00 3.20 2.80 3.30 Bibita 4.00 3.50 2.50 2.00 3.00 Dessert (indice 4) 2.00 2.50 1.90 2.20 2.90 Parziale 1 (ind. 1) 4 1 3 Parziale 2 (ind. 2) 2 2 2 Parziale 3 (ind. 3) 3 2 1 Parziale 4 (ind. 4) 2 3 3 Esercizio 2 Scrivere una funzione chiamata piatto_meno_ordinato, che pra i seguenti 2 argomenti di input la matrice M (menu) la matrice C (comanda) La funzione dovrà restituire come argomento di output il prezzo unitario del piatto che è stato ordinato nella minor quantità nella comanda C. Esempio: piatto_meno_ordinato(m, C) restituisce 3.20 3.20 rappresenta il prezzo unitario del piatto, ordinato nella minor quantità, ed è pari a 3.20. OSSERVAZIONE: Il piatto ordinato nella minor quantità nella comanda C è il Piatto 3, di tipo Panino

Tipo Piatto M Piatti C <<menu.txt>> Piatto 1 Piatto 2 Piatto 3 Piatto 4 (indice 4) Piatto 5 (indice 5) <<comanda.txt>> Piatto Tipo Piatto Quantità Pizza 5.00 6.50 7.00 5.50 6.00 Panino 3.50 3.00 3.20 2.80 3.30 Bibita 4.00 3.50 2.50 2.00 3.00 Dessert (indice 4) 2.00 2.50 1.90 2.20 2.90 Parziale 1 (ind. 1) 4 1 3 Parziale 2 (ind. 2) 2 2 2 Parziale 3 (ind. 3) 3 2 1 Parziale 4 (ind. 4) 2 3 3 Esercizio 3 [Parte 1/3] Scrivere un M-File Script chiamato pizzeria_script che effettui le seguenti operazioni 1. Importi la matrice M dal file menu.txt 2. Importi la matrice C dal file comanda.txt 3. Mostri un grafico a barre con le seguenti proprietà Sull asse X riporti gli indici di tutte i Tipi di Piatto Sull asse Y riporti, per ciascun Tipo di Piatto (indicato sull asse X), il prezzo unitario medio dei piatti di quel tipo Esempio: Per il piatto di tipo Pizza, il prezzo unitario medio è pari a 6.00 NOTA: I file menu.txt e comanda.txt contengono solo dati numerici. È utilizzato il separatore virgola (,) per separare le colonne. Si assuma che i file siano memorizzati all interno della Current Directory

Tipo Piatto M Piatti C <<menu.txt>> Piatto 1 Piatto 2 Piatto 3 Piatto 4 (indice 4) Piatto 5 (indice 5) <<comanda.txt>> Piatto Tipo Piatto Quantità Pizza 5.00 6.50 7.00 5.50 6.00 Panino 3.50 3.00 3.20 2.80 3.30 Bibita 4.00 3.50 2.50 2.00 3.00 Dessert (indice 4) 2.00 2.50 1.90 2.20 2.90 Parziale 1 (ind. 1) 4 1 3 Parziale 2 (ind. 2) 2 2 2 Parziale 3 (ind. 3) 3 2 1 Parziale 4 (ind. 4) 2 3 3 Esercizio 3 [Parte 2/3] 5.00, 6.50, 7.00, 5.50, 6.00 3.50, 3.00, 3.20, 2.80, 3.30 4.00, 3.50, 2.50, 2.00, 3.00 2.00, 2.50, 1.90, 2.20, 2.90 Contenuto del file menu.txt 4, 1, 3 2, 2, 2 3, 2, 1 2, 3, 3 Contenuto del file comanda.txt

Tipo Piatto M Piatti C <<menu.txt>> Piatto 1 Piatto 2 Piatto 3 Piatto 4 (indice 4) Piatto 5 (indice 5) <<comanda.txt>> Piatto Tipo Piatto Quantità Pizza 5.00 6.50 7.00 5.50 6.00 Panino 3.50 3.00 3.20 2.80 3.30 Bibita 4.00 3.50 2.50 2.00 3.00 Dessert (indice 4) 2.00 2.50 1.90 2.20 2.90 Parziale 1 (ind. 1) 4 1 3 Parziale 2 (ind. 2) 2 2 2 Parziale 3 (ind. 3) 3 2 1 Parziale 4 (ind. 4) 2 3 3 Esercizio 3 [Parte 3/3] Esempio Grafico Esercizio 3

Possibile Soluzione 1/3 Svolgimento Esercizio 1 function [importo_conto] = conto(m, C) [num_parziali, num_colonne] = size(c); indici_piatto_panino = find(c(:, 2) == 2); quantita_piatti_panino = sum(c(indici_piatto_panino, 3)); for indice_parziale = 1:num_parziali indice_piatto = C(indice_parziale, 1); indice_tipo = C(indice_parziale, 2); quantita = C(indice_parziale, 3); prezzo_unitario = M(indice_tipo, indice_piatto); if quantita_piatti_panino >= 3 && indice_tipo == 2 prezzo_unitario = prezzo_unitario - 0.03 * prezzo_unitario; importo_parziale(indice_parziale) = prezzo_unitario * quantita; importo_conto = sum(importo_parziale);

Possibile Soluzione 2/3 Svolgimento Esercizio 1 function [importo_conto] = conto(m, C) [num_parziali, num_colonne] = size(c); indici_piatto_panino = find(c(:, 2) == 2); quantita_piatti_panino = sum(c(indici_piatto_panino, 3)); importo_conto = 0; for indice_parziale = 1:num_parziali indice_piatto = C(indice_parziale, 1); indice_tipo = C(indice_parziale, 2); quantita = C(indice_parziale, 3); prezzo_unitario = M(indice_tipo, indice_piatto); if quantita_piatti_panino >= 3 && indice_tipo == 2 prezzo_unitario = prezzo_unitario - 0.03 * prezzo_unitario; importo_conto = importo_conto + prezzo_unitario * quantita;

Possibile Soluzione 3/3 Svolgimento Esercizio 1 function [importo_conto] = conto(m, C) [num_parziali, num_colonne] = size(c); quantita_piatti_panino = 0; for indice_parziale = 1:num_parziali if C(indice_parziale, 2) == 2 quantita_piatti_panino = quantita_piatti_panino + C(indice_parziale, 3); for indice_parziale = 1:num_parziali indice_piatto = C(indice_parziale, 1); indice_tipo = C(indice_parziale, 2); quantita = C(indice_parziale, 3); prezzo_unitario = M(indice_tipo, indice_piatto); if quantita_piatti_panino >= 3 && indice_tipo == 2 prezzo_unitario = prezzo_unitario - 0.03 * prezzo_unitario; importo_parziale(indice_parziale) = prezzo_unitario * quantita; importo_conto = sum(importo_parziale);

Svolgimento Esercizio 2 Possibile Soluzione function [numero, indice_tipo, prezzo_max] = piatto_caro(m) prezzo_max = max(max(m)); [indice_tipo, numero] = find(m == prezzo_max);

Svolgimento Esercizio 3 Possibile Soluzione (contenuto del file villaggio_script.m) M = importdata('menu_pizzeria.txt'); C = importdata('comanda.txt'); [num_tipi, num_colonne] = size(m); x = 1:num_tipi; y = mean(m, 2); bar(x, y);