Risoluzione Tracce di Esame: differenze tra le versioni
Da Bioingegneria Elettronica e Informatica.
(→Appello 17 Gennaio 2017) |
|||
Riga 13: | Riga 13: | ||
end | end | ||
− | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Riga 31: | Riga 30: | ||
V = ordina_vettore(V, k-1); | V = ordina_vettore(V, k-1); | ||
MO = matrice_da_vettore(V, D); | MO = matrice_da_vettore(V, D); | ||
− | |||
end | end | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Riga 55: | Riga 54: | ||
end | end | ||
end | end | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Riga 70: | Riga 70: | ||
end | end | ||
end | end | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Riga 85: | Riga 86: | ||
fclose(FILEID); | fclose(FILEID); | ||
end | end | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Riga 99: | Riga 101: | ||
fclose(FILEID); | fclose(FILEID); | ||
end | end | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Riga 122: | Riga 125: | ||
stampa_su_file_testo(B, N); | stampa_su_file_testo(B, N); | ||
stampa_su_file_binario(B, N); | stampa_su_file_binario(B, N); | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> |
Versione delle 10:14, 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
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);