Esercizio 1
Si scriva un programma che presa in input una espressione matematica da linea
di comando ne calcoli il risultato e lo visualizzi.
Tale espressione dovrà seguire la grammatica:
espressione = numero | numero operatore
espressione| (espressione)
operatore = + | *
dove numero è un numero intero decimale positivo.
Esempi:
10+20
15+(12+6+4*(5+8))
Il risultato deve essere calcolato assumendo che tutti gli operatori abbiano
la stessa precedenza e che, come di norma, le parentesi eventualmente presenti
siano usate per modificare l'associatività.
L'algoritmo implementato per il calcolo dovrà essere ricorsivo (ogni
espressione fra parentesi dovrà essere valutata attraverso una chiamata
ricorsiva).
Il programma può assumere che l'espressione fornita su linea di comando
sia consistente con la grammatica proposta.
Esercizio 2
Si scriva un programma che permetta di esercitarsi a battaglia navale.
Tale programma dovrà leggere il campo di gioco da un file di testo formato
da dieci righe di dieci caratteri; tale caratteri sono '.'
per reppresentare il mare e i caratteri '2',
'3', '4',
e '5' per rappresentare le navi
di, rispettivamente, due, tre, quattro e cinque unità.
Nel campo di gioco sono presenti tre navi da due e due e da tre unità,
due da quattro unità, una da cinque unità; le navi non possono
essere in contatto fra loro.
Esempio:
.22......4
.......2.4
333....2.4
.........4
3.........
3.4444....
3........2
.........2
.55555....
.......333
Una volta letta la rappresentazione del campo da gioco dal file il programma richiederà ripetutamente all'utente le coordinate dove colpire e, a seconda dell'esito, visualizzerà 'acqua' o 'colpito', iterando tale operazione sino all'affondamento dell'intera flotta.
Esercizio 3
Scrivere un programma che legga da linea di comando il nome di due file testuali,
compari linea per linea tali file e visualizzi infine tutte quelle linee che
sono presenti nel primo file ma non siano presenti nel secondo.