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 |
PASSED |
ricorsiva |
test conteggio |
punti |
Bardh Prenkaj |
20 |
SI |
NO |
10/20 = 0.5 |
Davide Sericoli |
20 |
SI |
NO |
10/20 = 0.5 |
Federica Spini |
15 |
NO |
NO |
3.75/20 = 0.1825 |
Lorenzo Pirro |
10 |
NO |
NO |
2.5/20 = 0.125 |
Lorenzo Zarfati |
10 |
NO |
NO |
2.5/20 = 0.125 |
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