Laboratorio di Architettura degli Elaboratori – (2003/2003...
Click here to load reader
Transcript of Laboratorio di Architettura degli Elaboratori – (2003/2003...
Laboratorio di Architettura degli Elaboratori – (2003/2003) Progettino A
Scrivere un programma in assembler MIPS che:
• Richieda all’utente la scelta della dimensione N di una matrice quadrata (NxN con 1<N<=4) di numeri naturali. Quindi richieda l’ inserimento per riga dei vari elementi. I numeri devono essere espressi sempre su due cifre (ad esempio, il numero “2” dovra’ essere visualizzato come “02” e il numero “345” come “45”).
• Stampi sulla console la matrice inserita nel modo illustrato dal seguente esempio (matrice 3x3): [[02 34 15] [11 98 23]
[76 25 09]] • Faccia comparire su console un menu’ con cui sia possibile scegliere tra le seguenti opzioni:
1. Stampa la riga i-esima (con 1 <= i <= N, a scelta dell’utente) come nel seguente esempio:
[02 34 15] 2. Stampa la colonna i-esima (con 1 <= i <= N, a scelta dell’utente), come nel seguente esempio:
[[34] [98]
[25]] 3. Rende la matrice triangolare inferiore, e la visualizza come nel seguente esempio:
[[02 00 00] [11 98 00]
[76 25 09]] 4. Rende la matrice triangolare superiore, e la visualizza come nel seguente esempio:
[[02 34 15] [00 98 23]
[00 00 09]] 5. Fa la somma di tutti gli elementi riga e li rappresenta in un vettore colonna, e visualizza il risultato come nel seguente esempio:
[[51] [32]
[10]] 6. Fa la somma di tutti gli elementi colonna e li rappresenta in un vettore riga, e visualizza il risultato come nel seguente esempio:
[89 57 47] 7. Calcola e visualizza la trasposta, come nel seguente esempio:
[[02 34 11] [34 98 25]
[76 23 09]] 8. Esegue la moltiplicazione per un vettore riga, inserito dall’utente, e visualizza l’operazione come nel seguente esempio:
[00 01 01] [[02 34 11]
[34 98 25] [76 23 09]]
= [10 21 34]
9. Esegue la moltiplicazione per un vettore colonna, inserito dall’utente, e visualizza l’operazione come nel seguente esempio:
[[02 34 11] [34 98 25]
[76 23 09]]
[[00] [01]
[01]]
= [[45] [23]
[31]]
10. Calcola il determinante della matrice e stampa sul video il suo valore (un numero). Note teoriche sul determinante di una matrice. Il determinante di una matrice A n x n (indicato con |A|)
a11 a12 … a1n a21 a22 … a2n … … … … an1 an2 … ann
puo’ essere espanso tramite i suoi “minori” nel seguente modo: a11 a12 a13 … a1n a22 a23 … a2n a21 a23 … a2n a21 a22 a23 … a2n = a11 … … … … - a12 … … … … + … … … … … … an2 an3 … ann an1 an3 … ann an1 an2 an3 … ann
a22 a23 … a2(n-1) … ± a1n … … … … an2 an3 … an(n-1)
Il determinante di una matrice 2x2 si ottiene nel seguente modo:
a b det = ad - bc
c d
L’espressione generale del determinante e’
A = aijCiji =1
n
dove e’ stata svolta la sommatoria rispetto solo all’ indice i e Cij e’ definito come:
Cij = (-1)i+jMij e Mij e’ il minore ottenuto della matrice A ottenuto eliminando la riga i-esima e la colonna j-esima. NOTE: • Ogni volta che si esegue una operazione di somma o moltiplicazione e l’elemento risultante di un vettore o matrice
supera il valore 99, prendere solo le due cifre meno significative (eccetto che per il calcolo del determinante). • Ogni punto dell’esercizio deve essere implementato come una funzione: specificare i parametri passati in ingresso
e restituiti in uscita. • Il punto 10 del progettino e’ particolarmente difficile: e’ fondamentale per ottenere un ottimo voto.