Homework 3: riconoscimento di parentesi

Bisogna riconoscere se in una stringa di testo contenente solo parentesi aperte e chiuse le parentesi sono corrette, ovvero:

  • una stringa di 0 caratteri č un gruppo di parentesi corretto
  • un gruppo corretto seguito da altri gruppi corretti č corretto
  • per ogni parentesi aperta ci deve essere la corrispondente parentesi chiusa
  • tra due parentesi č contenuto un gruppo di parentesi corretto

I caratteri che dovete considerare come parentesi sono:

  • parentesi aperte: { [ ( <
  • parentesi chiuse: } ] ) >

Realizzate la funzione ricorsiva riconosci che:

  • riceve come argomento una stringa di testo e tutti gli altri argomenti che ritenete necessari
  • riconosce se le parentesi sono corrette oppure no
  • torna 0 (FALSE) o 1 (TRUE) per indicare il risultato del test

Il main deve:

  • leggere una stringa lunga al massimo 100 caratteri
  • chiamare la funzione riconosci
  • stampare SI oppure NO a seconda del risultato del test
  • uscire

Esempi:

  • Input: {[][(<>([])<{}[]>)<>]}
  • Output: SI
  • Input: {[][(<>(])<{}[]>)<>]}
  • Output: NO (manca una parentesi aperta)
  • Input : {[][(<>([])<{}[>)<>]}
  • Output: NO (manca una parentesi chiusa)

Risultati completi

Ho fatto una prima correzione degli homework, che trovate QUI
  • alcuni hanno lasciato dei prompt nel programma, li ho commentati
  • per uno il prog si č bloccato su un esempio, ho dovuto ammazzarlo con ^C (trova il diff vuoto)
  • qualcuno ha usato lh invece di lb che dā un errore di allineamento

Ho competato i test e l'analisi dei programmi

  • Alcuni non hanno svolto il programma come funzione ricorsiva (prendendo metā del punteggio)
  • Altri contano le parentesi e falliscono un test in cui il conteggio č giusto ma le parentesi non sono nidificate correttamente (prendendo metā del punteggio)
    • Esempio: <(<[<<{(<([<[[[({<{<}>()[]>})]]]>])>)}>>]>)>

Studente PASSEDSorted ascending ricorsiva test conteggio punti
Lorenzo Pirro 10 NO NO 2.5/20 = 0.125
Lorenzo Zarfati 10 NO NO 2.5/20 = 0.125
Federica Spini 15 NO NO 3.75/20 = 0.1825
Bardh Prenkaj 20 SI NO 10/20 = 0.5
Davide Sericoli 20 SI NO 10/20 = 0.5
Massotti Melvin 20 NO SI 10/20 = 0.5
Sara Tramonte 20 NO SI 10/20 = 0.5
Simone Martinello 20 NO NO 5/20 = 0.25
Stefano Senarighi 20 NO NO 5/20 = 0.25

Gli altri hanno preso PASSED/20

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r5 - 2014-06-28 - 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