Laboratorio di Architettura degli Elaboratori – (2003/2003...

2

Click here to load reader

Transcript of Laboratorio di Architettura degli Elaboratori – (2003/2003...

Page 1: Laboratorio di Architettura degli Elaboratori – (2003/2003 ...bonda.cnuce.cnr.it/Documentation/Firenze/ProgettinoA-03.pdf · 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]]

Page 2: Laboratorio di Architettura degli Elaboratori – (2003/2003 ...bonda.cnuce.cnr.it/Documentation/Firenze/ProgettinoA-03.pdf · Laboratorio di Architettura degli Elaboratori – (2003/2003)

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.