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

  1. function [ M ] = acquisisci_elementi( M, D )
  2. %acquisisci_elementi Funzione per acquisire gli elementi della matrice quadrata
  3.  
  4.     for i = 1 : D
  5.         for j = 1 : D
  6.             M(i,j) = input('');
  7.         end
  8.     end
  9. end
  10.  
  11. end
  1. function [ MO ] = ordina_matrice( M, D )
  2. %ordina_matrice Funzione per ordinare gli elementi di una matrice per righe
  3.  
  4.     V = [];
  5.     k = 1;
  6.     for i = 1 : D
  7.         for j = 1 : D
  8.           V(k) = M(i,j);
  9.           k = k+1;
  10.         end
  11.     end
  12.  
  13.     V = ordina_vettore(V, k-1);
  14.     MO = matrice_da_vettore(V, D);
  15.  
  16. end
  1. function [ V ] = ordina_vettore( V, dim )
  2. %ordina_vettore Funzione per ordinare in maniera crescente un vettore
  3.  
  4.     for i = 1 : dim-1
  5.         i_min = i;
  6.         j = i+1;
  7.         for j = j : dim
  8.             if V(j) < V(i_min)
  9.                 % Se vero, aggiorno l'indice dell'elemento minimo
  10.                 i_min = j;
  11.              end
  12.          end
  13.  
  14.         % Blocco di codice relativo allo scambio
  15.         temp = V(i);
  16.         V(i) = V(i_min);
  17.         V(i_min) = temp;
  18.     end
  19. end
  1. function [ M ] = matrice_da_vettore( V, D )
  2. %matrice_da_vettore Funzione per le creazione di una matrice a partire da un vettore
  3.  
  4.     k = 1;
  5.     M = [];
  6.     for i = 1 : D
  7.         for j = 1 : D
  8.             M(i,j) = V(k);
  9.             k = k+1;
  10.         end
  11.     end
  12. end
  1. function [  ] = stampa_su_file_testo( M, D )
  2. %stampa_su_file_testo Funzione per stampare su file di testo una matrice
  3.  
  4.     FILEID = fopen('matrice.txt','w');
  5.     for i = 1 : D
  6.         for j = 1 : D
  7.             fprintf(FILEID, '%d ', M(i,j));
  8.         end
  9.         fprintf(FILEID, '\n');
  10.     end
  11.     fclose(FILEID);
  12. end
  1. function [  ] = stampa_su_file_binario( M, D )
  2. %stampa_su_file_testo Funzione per stampare su file di testo una matrice
  3.  
  4.     FILEID = fopen('matrice.dat','w');
  5.     for i = 1 : D
  6.         for j = 1 : D
  7.             fwrite(FILEID, M(i,j), 'double');
  8.         end
  9.     end
  10.     fclose(FILEID);
  11. end
  1. %% Algoritmo che acquisisce da tastiera gli elementi di una matrice A di 
  2. % dimensioni NxN, con N compreso nell’intervallo ]4,10], crea la matrice B 
  3. % con gli stessi elementi della matrice A, ma ordinati in ordine crescente 
  4. % per righe, e infine stampa gli elementi della matrice B in un file 
  5. % di testo e/o binario
  6.  
  7. flag = true;
  8. while flag == true
  9.     N = input('');
  10.     flag = N <= 4 || N > 10;
  11. end
  12.  
  13. A = [];
  14. A = acquisisci_elementi(A, N);
  15.  
  16. B = A;
  17. B = ordina_matrice(B, N);
  18.  
  19. stampa_su_file_testo(B, N);
  20. stampa_su_file_binario(B, N);