testo dell`esercitazione - Corso di Laurea in Informatica

Transcript

testo dell`esercitazione - Corso di Laurea in Informatica
Corso di Programmazione Procedurale - Anno Accademico 2003/2004 – Corso di Laurea in Informatica
Esercitazione di Laboratorio
Strutture di Dati
ESERCIZIO n. 1 (esercizio suggerito per il gruppo R)
Scrivere un programma in linguaggio C++ che gestisce i segni in schedina di 5 partite di calcio (un insieme fatto
esattamente di 5 caratteri che possono valere '1', 'X', oppure '2').:
•
leggere dalla tastiera i segni delle partite
•
stamparli sullo schermo
•
contare il numero di partite in cui ha vinto la squadra in casa (il segno è 1'), il numero di partite in cui ha vinto la
squadra in trasferta (il segno è '2'), e il numero di pareggi (il segno è 'X')
•
stampa i tre numeri calcolati al passo precedente sullo schermo
NOTA: per la rappresentazione della collezione è possibile utilizzare un array di caratteri.
ESERCIZIO n. 2 (esercizio suggerito per il gruppo R)
·
Scrivere un programma in linguaggio FORTRAN che risolve il problema del quesito precedente.
ESERCIZIO n. 3 (esercizio suggerito per il gruppo B)
Scrivere un programma in linguaggio C++ che gestisce l'archivio dei vini di una cantina. La cantina contiene da un
minimo di 0 ad un massimo di N vini. Per ciascun vino è necessario rappresentare il nome del vino (es: Aglianico),
e il numero di bottiglie disponibili. Un insieme di dati di esempio potrebbe essere il seguente:
Vino
Aglianico
Barolo
Chianti
Bottiglie
20
15
2
Il programma deve:
·
Acquisire da un file i dati relativi ai vini della cantina
·
Stampare i dati acquisiti sullo schermo
·
Leggere dalla tastiera un nome di vino e un numero di bottiglie, che rappresentano nuove bottiglie acquisite
dalla cantina (es: 10 bottiglie di Chianti)
·
Aggiornare la collezione di vini aggiungendo le bottiglie della nuova consegna; in particolare: (a) se il vino
consegnato è già presente nella cantina, bisogna aggiornarne il numero di bottiglie; (b) se il vino consegnato
non è presente, bisogna aggiungerlo alla collezione
Esempio a. nel caso della cantina precedente, supponiamo siano consegnate 10 bottiglie di Chianti; in questo
caso, la collezione diventa
Vino
Aglianico
Barolo
Chianti
Bottiglie
20
15
12
Esempio b. nel caso alla cantina dell'esempio siano consegnate 4 bottiglie di Sangiovese la collezione diventa
Vino
Aglianico
Barolo
Chianti
Sangiovese
Bottiglie
20
15
2
4
·
Stampare la nuova collezione sullo schermo
·
Salvare in un file i nuovi dati della cantina.
NOTA: Per la rappresentazione della collezione di vini è necessario utilizzare una lista. Nell’acquisizione dei dati è
necessario effettuare le operazioni di convalida
Corso di Programmazione Procedurale - Anno Accademico 2003/2004 – Corso di Laurea in Informatica
ESERCIZIO n. 4 (esercizio suggerito per i gruppi I e A)
Scrivere un programma in linguaggio C++ che gioca una parte del gioco della battaglia navale su una scacchiera di
dimensione 8x8. In particolare, il programma deve presentare all'utente un menu di comandi che consente di
effettuare le seguenti operazioni:
•
acquisire da file una configurazione della scacchiera di gioco, completa di navi già disposte (NOTA: è possibile
memorizzare la scacchiera come una matrice di dimensione 8x8 di numeri interi; es: 0 per quadratino di acqua,
1 per quadratino di nave non ancora colpito, 2 per quadratino di nave già colpito); NOTA: si suppone che le navi
siano disposte orizzontalmente o verticalmente e possano avere lunghezza variabile tra 1 e 4 quadratini
•
stampare la configurazione della scacchiera sullo schermo
•
“sparare” un colpo sulla scacchiera, specificando le coordinate; la risposta al colpo deve essere la seguente:
•
•
se il colpo finisce in acqua, la risposta deve essere “Acqua”
•
se il colpo colpisce un quadrato non ancora colpito di una nave la risposta deve essere “Colpito”
•
se il colpo colpisce un quadrato già colpito di una nave la risposta deve essere “Errore: colpo già
sparato”
salvare su file la nuova configurazione della scacchiera
NOTA: nella lettura delle coordinate del colpo è necessario effettuare la convalida dei dati
ESERCIZIO n. 5 (esercizio suggerito per il gruppo A)
Estendere il programma scritto al passo precedente, in modo che effettui anche il riconoscimento delle navi
affondate; in particolare:
•
quando l'utente spara un colpo, la risposta deve essere:
•
se il colpo finisce in acqua, la risposta deve essere “Acqua”
•
se il colpo colpisce una nave ma non la affonda (ci sono ancora porzioni non colpite della nave), la
risposta deve essere “Colpito”
•
se il colpo colpisce una nave e la affonda (tutte le porzioni sono state colpite), la risposta deve essere
“Affondata”; NOTA: si tenga presente che sulla scacchiera le navi non possono essere disposte in
posizioni adiacenti
•
se il colpo colpisce un quadrato già colpito di una nave la risposta deve essere “Errore: colpo già
sparato”