Risoluzione Tracce di Esame: differenze tra le versioni

Da Bioingegneria Elettronica e Informatica.
(Appello 17 Gennaio 2017)
(Appello 17 Gennaio 2017)
Riga 2: Riga 2:
 
'''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
  
 +
'''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.
 
<syntaxhighlight lang="matlab" line>
 
<syntaxhighlight lang="matlab" line>
 
function [ M ] = acquisisci_elementi( M, D )
 
function [ M ] = acquisisci_elementi( M, D )

Versione delle 10:16, 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.

  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
  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. 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);