Risoluzione Tracce di Esame: differenze tra le versioni
(→Appello 17 Gennaio 2017) |
(→Appello 17 Gennaio 2017) |
||
Riga 19: | Riga 19: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | La seconda funzione permette di ordinare gli elementi di una matrice, salvandogli prima in un vettore e applicando il noto algoritmo di [http://www.vitoantoniobevilacqua.it/wiki/index.php?title=Diagrammi_di_flusso_e_Codice_Matlab#Ordinamento_degli_elementi_di_un_vettore selection sort] sul vettore. Al termine viene chiamata la funzione matrice_da_vettore che crea ricrea la matrice inserendo gli elementi presenti nel vettore. | + | La seconda funzione permette di ordinare gli elementi di una matrice, salvandogli prima in un vettore e applicando il noto algoritmo di [http://www.vitoantoniobevilacqua.it/wiki/index.php?title=Diagrammi_di_flusso_e_Codice_Matlab#Ordinamento_degli_elementi_di_un_vettore selection sort] sul vettore. Al termine viene chiamata la funzione ''matrice_da_vettore'' che crea ricrea la matrice inserendo gli elementi presenti nel vettore. |
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
function [ MO ] = ordina_matrice( M, D ) | function [ MO ] = ordina_matrice( M, D ) | ||
Riga 39: | Riga 39: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | La terza funzione è quella che implementa l'algoritmo del selection sort ordinando gli elementi del vettore in maniera crescente. | ||
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
function [ V ] = ordina_vettore( V, dim ) | function [ V ] = ordina_vettore( V, dim ) | ||
Riga 62: | Riga 63: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | La quarta funzione è quella che permette di creare una matrice a partire dagli elementi di un vettore. | ||
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
function [ M ] = matrice_da_vettore( V, D ) | function [ M ] = matrice_da_vettore( V, D ) | ||
Riga 78: | Riga 80: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | La quinta funzione è quella che permette di salvare gli elementi di una matrice su un file di testo (formattandoli in maniera opportuna). | ||
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
function [ ] = stampa_su_file_testo( M, D ) | function [ ] = stampa_su_file_testo( M, D ) | ||
Riga 94: | Riga 97: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | La sesta funzione è quella che permette di salvare gli elementi di una matrice su un file binario. | ||
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
function [ ] = stampa_su_file_binario( M, D ) | function [ ] = stampa_su_file_binario( M, D ) | ||
Riga 109: | Riga 113: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Infine, lo script principale nel quale vengono chiamate in maniera opportuna le funzioni precedentemente implementate | ||
<syntaxhighlight lang="matlab" line> | <syntaxhighlight lang="matlab" line> | ||
%% Algoritmo che acquisisce da tastiera gli elementi di una matrice A di | %% Algoritmo che acquisisce da tastiera gli elementi di una matrice A di |
Versione delle 10:24, 18 gen 2017
Appello 17 Gennaio 2017
Traccia: Algoritmo che acquisisce da tastiera gli elementi di una matrice A di dimensioni NxN, con N compreso nell’intervallo ]4,10], crea la matrice B con gli stessi elementi della matrice A, ma ordinati in ordine crescente per righe, e infine stampa gli elementi della matrice B in un file di testo e/o binario
Codice MATLAB Di seguito le funzioni e lo script principale che risolve il problema espresso nella traccia.
La prima funzione è quella che permette di acquisire gli elementi di una matrice quadrata, noto il suo ordine.
function [ M ] = acquisisci_elementi( M, D )
%acquisisci_elementi Funzione per acquisire gli elementi della matrice quadrata
for i = 1 : D
for j = 1 : D
M(i,j) = input('');
end
end
end
La seconda funzione permette di ordinare gli elementi di una matrice, salvandogli prima in un vettore e applicando il noto algoritmo di selection sort sul vettore. Al termine viene chiamata la funzione matrice_da_vettore che crea ricrea la matrice inserendo gli elementi presenti nel vettore.
function [ MO ] = ordina_matrice( M, D )
%ordina_matrice Funzione per ordinare gli elementi di una matrice per righe
V = [];
k = 1;
for i = 1 : D
for j = 1 : D
V(k) = M(i,j);
k = k+1;
end
end
V = ordina_vettore(V, k-1);
MO = matrice_da_vettore(V, D);
end
La terza funzione è quella che implementa l'algoritmo del selection sort ordinando gli elementi del vettore in maniera crescente.
function [ V ] = ordina_vettore( V, dim )
%ordina_vettore Funzione per ordinare in maniera crescente un vettore
for i = 1 : dim-1
i_min = i;
j = i+1;
for j = j : dim
if V(j) < V(i_min)
% Se vero, aggiorno l'indice dell'elemento minimo
i_min = j;
end
end
% Blocco di codice relativo allo scambio
temp = V(i);
V(i) = V(i_min);
V(i_min) = temp;
end
end
La quarta funzione è quella che permette di creare una matrice a partire dagli elementi di un vettore.
function [ M ] = matrice_da_vettore( V, D )
%matrice_da_vettore Funzione per le creazione di una matrice a partire da un vettore
k = 1;
M = [];
for i = 1 : D
for j = 1 : D
M(i,j) = V(k);
k = k+1;
end
end
end
La quinta funzione è quella che permette di salvare gli elementi di una matrice su un file di testo (formattandoli in maniera opportuna).
function [ ] = stampa_su_file_testo( M, D )
%stampa_su_file_testo Funzione per stampare su file di testo una matrice
FILEID = fopen('matrice.txt','w');
for i = 1 : D
for j = 1 : D
fprintf(FILEID, '%d ', M(i,j));
end
fprintf(FILEID, '\n');
end
fclose(FILEID);
end
La sesta funzione è quella che permette di salvare gli elementi di una matrice su un file binario.
function [ ] = stampa_su_file_binario( M, D )
%stampa_su_file_testo Funzione per stampare su file di testo una matrice
FILEID = fopen('matrice.dat','w');
for i = 1 : D
for j = 1 : D
fwrite(FILEID, M(i,j), 'double');
end
end
fclose(FILEID);
end
Infine, lo script principale nel quale vengono chiamate in maniera opportuna le funzioni precedentemente implementate
%% Algoritmo che acquisisce da tastiera gli elementi di una matrice A di
% dimensioni NxN, con N compreso nell’intervallo ]4,10], crea la matrice B
% con gli stessi elementi della matrice A, ma ordinati in ordine crescente
% per righe, e infine stampa gli elementi della matrice B in un file
% di testo e/o binario
flag = true;
while flag == true
N = input('');
flag = N <= 4 || N > 10;
end
A = [];
A = acquisisci_elementi(A, N);
B = A;
B = ordina_matrice(B, N);
stampa_su_file_testo(B, N);
stampa_su_file_binario(B, N);