Primo Homework

Si implementi in assembler MIPS il programma che calcola e stampa un istogramma, ovvero:

  • legge 40 numeri interi compresi tra 0 e 799 (inclusi) e li memorizza in un vettore dati allocato staticamente
  • suddivide l'intervallo tra 0 e 799 in 8 parti uguali (da 0 a 99, da 100 a 199, .... da 700 a 799)
  • calcola quante volte i valori dei dati appaiono in ciascun intervallo
  • stampa in orizzontale l'istogramma dei conteggi ottenuti, ovvero stampa 8 righe nel formato
X<spazio><X asterischi> 
(con X che è il conteggio dei valori letti nell'intervallo corrispondente)

Esempio: se l'input è quello del file

780
2
136
295
26
620
419
108
715
663
650
349
373
535
679
9
383
425
424
421
623
164
408
147
98
89
421
741
35
367
321
223
178
497
317
159
631
799
23
234
L'output sarà:
7 *******
6 ******
3 ***
6 ******
7 *******
1 *
6 ******
4 ****

Come lanciare il programma (salvato nel file mioprogramma.asm ):

    java -jar Mars4_4.jar sm nc mioprogramma.asm < dati.txt

Ci vediamo lunedì in aula per qualsiasi chiarimento.

Consegna entro le ore 24 di lunedì 7 aprile

Considerazioni aggiuntive

Ripensandoci, (non vi chiedo di farlo) ma i dati potrebbero non essere memorizzati ma processati mentre vengono letti, ed addirittura gli 8 contatori potrebbero essere tenuti in 8 registri, oppure impacchettati in 8 byte, ovvero 2 registri.... dopo tutto non è un esercizio troppo difficile big grin

Risultati

Ho testato i vostri programmi su 10 file generati a caso, ecco i risultati:

  • index.html: Risultati dei test su 10 set di dati generati a caso
  • un paio di voi avevano inserito dei messaggi di prompt che ho dovuto ignorare (la prossima volta niente prompt, plis)
  • l'errore più comune è stato leggere/elaborare solo 39 dati invece che 40
  • un paio di programmi si bloccano o stampano un numero infinito di asterischi

  • io ho implementato l'esercizio così

  • il punteggio ottenuto per questo homework è PASSED/10

Corrispondenze

Ho notato una certa somiglianza tra alcuni programmi, queste sono le corrispondenze più evidenti:

https://twiki.di.uniroma1.it/pub/Architetture2/MZ/AA13_14/HomeWork1/amici.svg

Per questi compiti il punteggio di questo homework dovrebbe essere 0, ma alcuni di voi mi dicono di non aver assolutamente copiato. Quello che posso fare è una via di mezzo tra quello che sarebbe giusto (credere nella vostra buona fede) e quello che sarebbe "sicuro" (credere solo ai dati e diffidare di voi), ovvero assegnare il valore del compito svolto a entrambi ovvero suddividere il punteggio tra i partecipanti ad un gruppo di compiti simili. Quindi:

  • chi appare in un gruppo di N persone prende come voto (10/PASSED)/N

-- AndreaSterbini - 29 Mar 2014

Edit | Attach | Watch | Print version | History: r10 < r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r10 - 2014-05-06 - 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