Homework 2

Realizzate il programma assembly MIPS che:

  1. legge una matrice di CxR elementi interi (word) e la mette in memoria
  2. parte dalla casella a coordinate 0,0
  3. legge una successione di "mosse" che indicano ciascuna di quante colonne e quante righe ci si deve spostare rispetto alla casella corrente
  4. somma UNA SOLA VOLTA tutte le caselle toccate dalle mosse (anche se si dovesse passare più volte sulla stessa casella)
    • NOTA: la casella a coordinate 0, 0 va sommata solo se il percorso ci passa sopra
  5. termina la successione di mosse quando legge la coppia di spostamenti 0, 0
  6. stampa il risultato

NOTA: nel calcolare la prossima casella di una mossa si deve considerare la matrice come toroidale, ovvero:

  • se si supera l'ultima colonna/riga si continua con la prima colonna/riga
  • viceversa se si torna indietro prima della prima riga/colonna, si continua con l'ultima riga/colonna
  • suggerimento: usate la funzione modulo

Input del programma

Il programma riceve in input:
  • C: numero di colonne della matrice, numero intero compreso tra 1 e 100 inclusi
  • R: numero di righe della matrice, numero intero compreso tra 1 e 100 inclusi
  • RxC interi in ordine di riga e colonna
    • prima la prima riga di C elementi (dalla colonna 0 alla colonna C-1)
    • poi la seconda riga di C elementi
    • ...
    • infine l'ultima riga di C elementi
  • una successione, di lunghezza non conosciuta a priori, di coppie di interi relativi terminata dalla coppia 0 0
    • DC: variazione dell'indice di colonna
    • DR: variazione dell'indice di riga

Output del programma

  • la somma di tutti gli elementi toccati dal cammino descritto dagli spostamenti, presi una sola volta

NOTA: non scrivete altro (prompt o messaggi)

Esempio

Se la matrice 7x5 fosse

00 01 02 03 04 05 06
10 11 12 13 14 15 16
20 21 22 23 24 25 26
30 31 32 33 34 35 36
40 41 42 43 44 45 46

E la sequenza di mosse fosse:

  • +2, +5
  • -5, +3
  • +11, -6
  • -2, +2
  • +8, -9
  • +1, +2
  • 0, 0
Le caselle toccate sarebbero, nell'ordine, alle coordinate (colonna, riga)
  • 2, 0
  • 4, 3
  • 1, 2
  • 6, 4
  • 0, 0
  • 1, 2
Ovvero le caselle evidenziate
00 01 02 03 04 05 06
10 11 12 13 14 15 16
20 21 22 23 24 25 26
30 31 32 33 34 35 36
40 41 42 43 44 45 46

Quindi la somma da stampare è 00 + 02 + 21 + 34 + 46 = 103

Notate che la casella a coordinate 1,2 è stata toccata più volte ma va sommata solo una volta

Input per l'esempio di cui sopra

7
5
0
1
2
3
4
5
6
10
11
12
13
14
15
16
20
21
22
23
24
25
26
30
31
32
33
34
35
36
40
41
42
43
44
45
46
+2
+5
-5
+3
+11
-6
-2
+2
+8
-9
+1
+2
0
0

Output atteso

103

Esempio di input-output in forma di file

Consegna

Consegnate l'esercizio entro il 10 aprile alle ore 24 sulla pagina di consegna

Risultati (definitivi)

Trovate i risultati dei test su https://twiki.di.uniroma1.it/pub/Architetture2/MZ/AA14_15/HomeWork2/

-- AndreaSterbini - 26 Mar 2015

Edit | Attach | Watch | Print version | History: r7 < r6 < r5 < r4 < r3 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r7 - 2015-04-11 - AndreaSterbini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback