• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
7
0
0

Testo completo

(1)

Fondamenti di Informatica

Strutture Selettive, Iterative e Gestione File:

Esercitazione 3

Prof. Arcangelo Castiglione

A.A. 2016/17

(2)

In questa esercitazione verranno utilizzate una matrice C ed una matrice I

L’elemento C(riga, colonna) rappresenta il numero di vetture vendute di una data marca (specificata dalla colonna), appartenenti ad un dato segmento (specificato dalla riga)

Esempio: C(2, 1) à Indica che sono state vendute 40 vetture di Marca X (avente indice di colonna 1), appartenenti al Segmento B (avente indice di riga 2)

L’elemento I(riga, colonna) rappresenta l’incasso per una singola vettura venduta di una data marca (specificata dalla colonna), appartenente ad un dato segmento (specificato dalla riga)

Esempio: I(1, 2) à Indica che è stato ottenuto un incasso di 18000 per una singola vettura di Marca Y (avente indice di colonna 2), appartenente al Segmento A (avente indice di riga 1)

• Entrambe le matrici contengono esclusivamente dati numerici (evidenziati in arancio nell’esempio)

NOTA: Negli esercizi possono essere utilizzate funzioni viste a lezione (negli esempi), funzioni realizzate negli esercizi precedenti e/o funzioni built-in di MATLAB

Programmazione in MATLAB | Gestione File: Esercitazione

(3)

Scrivere una funzione chiamata auto_vendute, che prenda come argomenti di input: la matrice C (concessionaria) ed un numero intero indice_segmento, e restituisca come argomento di output il numero totale di auto vendute per il segmento con indice indice_segmento

Esempio: auto_vendute(C, 2)à restituisce 62 Possibile Soluzione 1

Possibile Soluzione 2

(indice 1) (indice 2) (indice 3)

Segmento A (indice 1) 90 7 2

Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

Es er ciz io 1

function [ auto_vendute_segmento ] = auto_vendute(C, indice_segmento) auto_vendute_segmento = sum(C(indice_segmento, :));

end

function [ auto_vendute_segmento ] = auto_vendute(C, indice_segmento) auto_vendute_ogni_segmento = sum(C, 2);

auto_vendute_segmento = auto_vendute_ogni_segmento(indice_segmento);

end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

Programmazione in MATLAB | Gestione File: Esercitazione

(4)

Scrivere una funzione chiamata incasso_concessionaria, che prenda come argomenti di input:

la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’incasso totale realizzato della concessionaria

Esempio: incasso_concessionaria(C, I)à restituisce 4022000 Possibile Soluzione 1

Possibile Soluzione 2

Es er ciz io 2

function [ incasso_totale ] = incasso_concessionaria(C, I) incasso_totale = sum(sum(C .* I));

end

function [ incasso_totale ] = incasso_concessionaria(C, I) [num_segmenti, num_marche] = size(C);

somma = 0;

for indice_marca = 1:num_marche

somma = somma + sum(C(:, indice_marca) .* I(:, indice_marca));

end

incasso_totale = somma;

end

Programmazione in MATLAB | Gestione File: Esercitazione

(5)

Scrivere una funzione chiamata segmento_piu_redditizio, che prenda come argomenti di input: la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’indice del segmento che genera incassi massimi

Esempio: segmento_piu_redditizio(C, I)à restituisce 3

OSSERVAZIONI: Il valore 3 si riferisce al Segmento C (che genera gli incassi massimi, equivalenti, a 1940000) Possibile Soluzione 1

Possibile Soluzione 2

(indice 1) (indice 2) (indice 3)

Segmento A (indice 1) 90 7 2

Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

Es er ciz io 3

function [ indice_segmento ] = segmento_piu_redditizio(C, I)

[valore_massimo_segmento, indice_segmento] = max(sum(C .* I, 2));

end

function [ indice_segmento ] = segmento_piu_redditizio(C, I) [num_segmenti, num_marche] = size(C);

for indice_segmento = 1:num_segmenti

somme_righe(indice_segmento) = sum(C(indice_segmento, :) .* I(indice_segmento, :));

end

[massimo, indice_segmento] = max(somme_righe);

end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

Programmazione in MATLAB | Gestione File: Esercitazione

(6)

Scrivere una funzione chiamata incasso_medio_marca, che prenda come argomento di input la matrice I (incasso_singolare) ed un numero intero indice_marca, e restituisca come argomento di output l’incasso medio di vendita di tutte le vetture della marca avente indice indice_marca

Esempio: incasso_medio_marca(C, 1) à restituisce 13333.3 Possibile Soluzione

Es er ciz io 4

function [ incasso_medio ] = incasso_medio_marca(I, indice_marca) incasso_medio = mean(I(:, indice_marca));

end

Programmazione in MATLAB | Gestione File: Esercitazione

(7)

Scrivere un M-File Script chiamato concessionaria_script.m che effettui le seguenti operazioni

1. Importi la matrice C dal file concessionaria.txt 2. Importi la matrice I dal file incasso_singolare.txt

3. Invochi la funzione dell’Esercizio 2 (chiamata incasso_concessionaria) con gli argomenti di input: C e I, ed infine mostri a video il risultato della funzione stessa

NOTA: I file concessionaria.txt e incasso_singolare.txt contengono solo dati numerici. È utilizzato il separatore virgola (,) per separare le colonne (suggerimento: utilizzare la funzioneimportdata). Si assuma che i file siano memorizzati all’interno della Current Directory

Possibile Soluzione

(indice 1) (indice 2) (indice 3)

Segmento A (indice 1) 90 7 2

Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

Es er ciz io 5

<<incasso_singolare.txt>> Marca X Marca Y Marca Z Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

C = importdata('concessionaria.txt');

I = importdata('incasso_singolare.txt');

incasso_concessionaria(C, I)

Contenuto del file

concessionaria_script.m

Programmazione in MATLAB | Gestione File: Esercitazione

Riferimenti

Documenti correlati

Date una riga ed una colonna di numeri reali aventi lo stesso numero di componenti, moltiplicando ciascun elemento della riga per il corrispondente elemento della colonna e poi

Ora, dal «cassettino secreto» del Bembo, e non del Gualteruzzi, emerge la prima redazione del sonetto al Giovio, come anche dei due sonetti della pe- nitenza: vale a

Steiner (1796–1863) hanno provato che ogni costruzione eseguibile con riga e compasso è ottenibile anche con la sola riga quando sia assegnata, nel foglio, una circonferenza

La scoperta dei numeri trascendenti consentì, come vedremo, la dimostrazione d’impossibilità di diversi antichi problemi geometrici riguardanti le costruzioni con riga e compasso;

1- Devo incolonnare bene i fattori e moltiplicare prima le unità (2x8).

Dati un insieme A che contiene n elementi, un insieme B che contiene m elementi, ed una relazione R da A a B, la relazione R si può rappresentare con una matrice booleana nxm

Esercizio 2: In modo analogo a come effettuato nell’Esercizio 1, si considerino le seguenti coppie di valori reali x, y ∈ R.. Si costruisca uno

SCRIVI I SEGUENTI NUMERI IN CIFRA (evidenzia la parola che ti aiuta a capire il periodo (5 punti). settantatremiliardiquindicimilionitrecentomilaseicentodue