---++ Homework 1 - Anagrammi Realizzate il programma assembly MIPS che gira sul simulatore MARS e che: * Legge una stringa *testo1* seguita da accapo lunga al massimo 100 caratteri * Legge una stringa *testo2* seguita da accapo lunga al massimo 100 caratteri * Per ciascuno dei due testi calcola l'istogramma della frequenza delle lettere * ovvero per ciascuna lettera (codici ascii da 1 a 255) conta quante volte essa appare nel corrispondente testo * Confronta i due istogrammi così ottenuti e stampa la stringa (seguita da accapo) * *ANAGRAMMA* se i due istogrammi sono identici (ovvero le lettere sono tutte presenti lo stesso numero di volte, anche se in ordine diverso) * *SIMILI* se i due istogrammi differiscono solo di 1 o 2 (ovvero una o due lettere sono state tolte/aggiunte oppure una è stata scambiata con una diversa) * *DIVERSI* se i due istogrammi differiscono di 3 o più *NOTA:* se le due stringhe sono vuote (contengono solo accapo) la loro differenza è 0, quindi stampate *ANAGRAMMA* *NOTA:* se una stringa in input fosse maggiore di 100 caratteri la syscall 8 deve prendere solo i primi 100 ed ignorare i seguenti. (in questo caso la stringa termina con '\0' invece che con '\n') *NOTA:* nel confrontare i due istogrammi, per ogni lettera, vi conviene calcolare la differenza di conteggio in valore assoluto. ---+++ Esempio Se i testi sono: <verbatim> Paperino e' andato al mare con Paperina e Qui, Quo, Qua. Paperina e' andata al mare con Paperino e Qua, Qui, Quo.</verbatim> Il programma deve stampare <verbatim> SIMILI</verbatim> Infatti, a parte la posizione di alcune coppie di lettere scambiate tra di loro, che non cambia i conteggi per quelle lettere, c'è una sola lettera sostituita con una diversa (andat<b>o</b>->andat<b>a</b>) quindi gli istogrammi differiscono di 2. (il conteggio della lettera *o* diminuisce di 1 mentre quello della lettera *a* aumenta di 1, quindi *|-1|+|+1|=2* ) ---+++ Test * Il vostro programma verrà provato su almeno 20 coppie di testi da me generati per verificare i diversi casi. * La verifica se l'output è corretto è automatica, quindi per evitare di fallire i test *NON* stampate nessun altro messaggio da programma tranne l'output richiesto. * Per provare ad eseguire il vostro programma con input/output da file potete usare il comando (in una finestra di comandi) <verbatim> java -jar Mars4_5.jar me nc sm ic programma.asm < input.txt > output.txt</verbatim> * Trovate [[%ATTACHURL%][QUI i risultati dei test con relativi file usati]]. (ordinabile cliccando sull'intestazione della colonna) * Lancio i test una o due volte al giorno, quindi il vostro programma verrà controllato alla peggio entro il giorno seguente. ---+++ Consegna entro lunedì 27 marzo 2017 ore 24 * Dovete essere [[TWiki/TWikiRegistration][iscritti a twiki]] * Chi copia/passa avrà il proprio compito annullato * Attenti a non inserire caratteri strani (accentate o virgolette inglesi) nel programma * Potete consegnare più volte, vale solo l'ultima __[[http://twiki.di.uniroma1.it/~andrea/consegna-HW-2017.html][Consegnate QUI]]__
This topic: Architetture2/MZ/AA16_17
>
HomeWork1
Topic revision: r4 - 2017-03-23 - AndreaSterbini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback