Risoluzione Tracce di Esame: differenze tra le versioni
Da Bioingegneria Elettronica e Informatica.
(Creata pagina con "== 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], cre...") |
|||
Riga 1: | Riga 1: | ||
== Appello 17 Gennaio 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 | '''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 | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | 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 | ||
+ | |||
+ | end | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | <syntaxhighlight lang="matlab" line> | ||
+ | %% 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); | ||
+ | </syntaxhighlight> |
Versione delle 11:13, 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
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
end
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
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
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
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
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
%% 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);