ESERCITAZIONI IN JAVA -...

43
ESERCITAZIONI IN JAVA Alfonso Lentini Dott. in Ingegneria Informatica

Transcript of ESERCITAZIONI IN JAVA -...

ESERCITAZIONI IN JAVA

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 1

Utilizzando l’ambiente di sviluppo, scrivere, compilare ed eseguire il seguente

programma in linguaggio Java.

Public class EsercizioUno{

public static void main (String[] args){

int x , y, z;

Scanner in = new Scanner(System.in);

System.out.print("Introduci un numero intero: ");

x = in.nextInt();

y = 3;

z = x/y;

System.out.println(x + "/" + y+" = " + z);

}

}

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 2

Disegnare il flow-chart per il calcolo del modulo (valore assoluto) di

un numero; in particolare il programma dovrà:

a) Acquisire da input un valore intero, positivo o negativo, e

memorizzarlo in una variabile opportunamente definita.

b) Stabilire utilizzando la struttura elementare if-then(-else) se

tale variabile contiene un valore negativo e, in questo caso,

trasformarlo nel corrispondente valore positivo

c)Inviare in output il valore finale, ovvero il modulo del valore

acquisito

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 3

Disegnare il flow-chart per stabilire se un numero è primo e successivamente scriverne il codice Java corrispondente; in particolare, la soluzione dovrà:

a) Acquisire da input un valore intero da tastiera

b) Utilizzare le strutture elementari while-do o do-while per stabilire tramite un ciclo se il numero è primo o meno

c) A seconda dei casi, inviare in output un opportuno messaggio.

Nota1) Sforzarsi di realizzare un algoritmo “ben strutturato”, senza salti: in questo caso l’utilizzo di una variabile logica (in gergo “flag”, bandierina) può aiutare.

Nota2) Adottare sempre il metodo dei raffinamenti successivi: ad esempio, nella stesura iniziale considero come divisori tutti i numeri che precedono il numero dato.

Successivamente analizzare nel dettaglio il problema, per vedere se è possibile limitare il numero di cicli.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 4

Scrivere un programma che definisca 3 variabili intere chiamate

operand1, operand2 e result, e:

a) Acquisisca da tastiera il valore di operand1 e operand2 tramite il metodo nextInt() dell’oggetto Scanner

b) Ne calcoli la somma e la salvi nella variabile result

c) Visualizzi a video il valore della variabile result utilizzando il

metodo System.out.println()

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 5

Scrivere un programma Java in grado di risolvere un’equazione di primo grado espressa nella forma ax+b=0; in particolare il programma dovrà:

a) Definire due variabili intere (int), a e b per memorizzare i coefficientidell’equazione

b) Definire una variabile intera chiamata x in cui memorizzare il risultato dell’equazione

c) Acquisire da tastiera il valore dei coefficienti a e b

d) Calcolare il valore di x e visualizzarlo a video

Approfondimento: cosa succede nel caso in cui il valore di a è uguale a 0?

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 6

Realizzare un programma per la conversione da gradi Celsius a

gradi Fahrenheit e viceversa. Il programma deve permettere di

inserire una lettera 'C' o 'F' che indica la scala (Celsius o Fahrenheit)

dei gradi; il valore dei gradi verrà inserito in seguito. Il programma

deve calcolare e visualizzare i gradi Fahrenheit o Celsius

rispettivamente.

Formule utili:

F° = (C° x 1,8)+32

C° = 1,8x(F° - 32)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 7

Scrivere un programma che definisca 2 variabili intere chiamate var1, var2. Il programma dovrà:

a) Assegnare i seguenti valori alle variabili definite:

var1 = -3

var2 = 12

b) Scambiare il contenuto delle due variabili

c) Stamparle nel formato seguente:

System.out.println("la variabile var1 e’: " + var1 +

"la variabile var2 e’: " + var2);

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 8

Scrivere un programma che definisca 3 variabili reali (float)

chiamate length, width e perimeter, corrispondenti a base, altezza

e perimetro di un rettangolo:

a) Inizializzi le variabili length e width usando dei valori scelti dalprogrammatore

b) Partendo da questi dati, calcoli il perimetro del rettangolo e

lo salvi nella variabile perimeter

Visualizzare il contenuto delle variabili mediante l’uso del

debbugger

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 9

Definire e assegnare dei valori iniziali alle variabili intere A, B , definire una variabile booleana C (ad esempio: A=3,B=5 o A=7, B=7). Se eseguo la seguente istruzione:

C = (A==B)

qual è il valore di C? Si ripeta l'esperimento con gli altri operatori relazionali: != , <= , >=, al posto di ==

Approfondimento: si calcoli e visualizzi il valore di C per tutte le combinazioni di true e false come valore delle variabili A e B ridefinite come variabili di tipo booleano (A=false B=false, A=false B=true, A=trueB=false, A=true B=true) nella seguente espressione

C = ( (A && B) || (!B) ) && (!A)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 10

Si scriva un programma per determinare la soluzione della seguente equazione: ax + bcx + dK = 0

In particolare:

a) Si definisca una costante intera K , e gli si assegni un valore a piacere

b) Si definiscano quattro variabili intere chiamate a, b, c, d corrispondenti ai parametri dell'equazione ed un'ulteriore variabile reale x

c) Si acquisisca da tastiera il valore di a, b, c, e d

d) Si calcoli il valore di x

e) Si stampi il risultato a video.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 11

Desidero acquistare un cellulare usato. La cifra massima che voglio spendere è:

100 euro come prezzo base.

40 euro aggiuntivi per ognuna delle caratteristiche a cui sono interessato

20 euro in meno per ogni mese in cui il cellulare è stato posseduto dal precedente proprietario.

Si realizzi un programma Jave che:

a) Definisca tramite delle costanti per i valori che compongono il prezzo

b) Definisca le variabili intere price, features, months e years

c) Acquisisca da tastiera la quantità di caratteristiche possedute dal cellulare (features) e

di anni per cui il cellulare è stato posseduto (years)

d) Calcoli il numero di mesi per cui il cellulare è stato posseduto (months)

e) Calcoli il prezzo massimo spendibile per il cellulare (price)

f) Si stampi il risultato a video.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 12

Scrivere un programma Java che classifichi un triangolo date le lunghezze dei suoi lati.

L'algoritmo deve implementare le seguenti funzionalità:

a) Ricevere da tastiera 3 numeri interi corrispondenti alle lunghezze dei lati

b) Stabilire se il triangolo è valido, degenere o non valido

c) In caso sia valido, stabilire se si tratta di un triangolo equilatero, isoscele o scaleno.

Suggerimento: un triangolo è valido se ogni lato è strettamente minore della

somma degli altri due, è degenere se un lato è uguale alla somma degli altri due.

Approfondimento: stabilire se il triangolo è anche rettangolo, ovvero se rispetta il teorema di Pitagora (𝑐𝑎𝑡𝑒𝑡𝑜12 + 𝑐𝑎𝑡𝑒𝑡𝑜22 = 𝑖𝑝𝑜𝑡𝑒𝑛𝑢𝑠𝑎2).

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 13

Si scriva un programma che acquisisca 2 numeri interi e ne calcoli

la media.

Si controlli il risultato per le seguenti copie: di valori (1,1) (0,8) (2,5)

(-5,0) (-3,3).

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 14

Si scriva un programma che acquisisca quattro numeri interi positivi minori di 1000. Il programma dovrà:

a. controllare che i valori siano contenuti nell’intervallo definito [0, 1000). In caso contrario dovrà assegnare 0 al valore acquisito e indicare l’errore all’utente

b. calcolare la massima differenza fra i valori acquisiti (in valore assoluto)

c. stampare il valore della massima differenza come risultato.

Per esempio, se il programma riceve: 25, 115, 380, 213

Il programma dovrà stampare il valore: 355 che corrisponde alla differenza fra 380 e 25.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 15

Si scriva un programma in linguaggio Java in grado di determinare se l'equazione di secondo grado (a𝑥2 + bx + c = 0) ha soluzioni reali.

In particolare:

a. Si definiscano tre variabili chiamate a, b e c, corrispondenti ai parametri dell’equazione

b. Si acquisisca da tastiera il valore di a, b e c

c. Si calcoli il cosiddetto discriminante della formula risolutiva

i. In caso il delta sia positivo, visualizzare il seguente messaggio “L’equazione ha due soluzione REALI distinte”

ii. In caso il delta sia nullo, visualizzare il seguente messaggio “L’equazione ha due soluzione REALI coincidenti”

iii. Altrimenti stampare a video un messaggio per segnalare che l’equazione non ha soluzioni reali

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 16

Si scriva un programma in linguaggio Java che, dato un numero

intero tra 1 e 12 che rappresenta il mese corrente, utilizzi il costrutto

switch per stampare il nome del mese per esteso (1→“Gennaio”,

2→"Febbraio", 3→”Marzo”, …, 12 → “Dicembre”).

Il programma gestisca anche le situazioni di inserimento di valori

non compresi nell’intervallo 1-12.

Approfondimento: modificare il programma in modo che accetti

come input una data nella forma gg/mese/anno (esempio:

23/3/2012) e stampi la stessa data con il mese per esteso(esempio:

23 marzo 2012).

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 17

Si scriva un programma Java che acquisisca numeri interi da

tastiera finché non viene inserito il valore 0.

Approfondimento: modificare il programma accumulando (ovvero

continuando a sommare) in una variabile i valori inseriti prima

dell’immissione del numero 0; al termine dell’acquisizione il

programma stampi a video il valore calcolato.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 18

Scrivere un programma Java che acquisisca in input da tastiera un

valore intero positivo N<= 40 corrispondente alla base di un

triangolo rettangolo e isoscele, e che riproduca a video tale

triangolo utilizzando il carattere ‘*’.

Esempio: se il valore letto da tastiera è 3, a video dovrà essere

visualizzata la seguente serie di caratteri:

*

**

***

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 19

Scrivere un programma in linguaggio Java che visualizzi i primi 20

numeri della serie di Fibonacci.

Suggerimento: ecco i primi numeri appartenenti alla serie 0 1 1 2 3 5

8 … In modo formale la serie si costruisce considerando la seguente

relazione:

𝑥𝑖 = 𝑥𝑖−1 + 𝑥𝑖−2, con 𝑥0=0 e 𝑥1=1;

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 20

Scrivere un programma Java che legga in input da tastiera un

numero reale N e successivamente numeri interi finché entrambe le seguenti condizioni sono rispettate

a. La media dei numeri acquisiti è superiore al valore di N

b. Sono stati acquisiti meno di 10 numeri.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 21

Si scriva un programma Java che definisca e manipoli un vettore

composto di 10 elementi interi; il programma deve

a. Acquisire valori da tastiera e memorizzarli all’interno del

vettore

b. Stampare il contenuto del vettore al termine dell’acquisizione

c. Calcolare e stampare la media dei valori nel vettore

d. Individuare e stampare a video il valore massimo e la sua

posizione nel vettore.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 22

Scrivere un programma Java che definisca due vettori v1 e v2 di N

elementi di tipo intero e memorizzi nei vettori valori “accettabili”

acquisiti da tastiera secondo quanto segue:

a. In v1 siano memorizzati solo i valori positivi ed i valori negativi

multipli di 3

b. In v2 siano memorizzati solo i valori negativi non multipli di 3 e

dispari

c. Tutti gli altri valori acquisiti siano ignorati

d. L’inserimento si conclude quando uno dei due vettori è pieno; a

questo punto si stampi a video il contenuto dei vettori acquisiti.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 23

Scrivere un programma Java che acquisisca un massimo di N valori interi, con N costante definita a piacimento. L’acquisizione deve procedere finché la serie di numeri è monotona, ovvero costituita da numeri in ordine crescente o decrescente. Stampare il contenuto del vettore al termine dell’acquisizione

Esempi:

(N=10)

1 4 6 10 4 l’inserimento del valore 4 termina le iterazioni

9 7 6 7 l’inserimento del valore 7 termina le iterazioni

1 2 3 4 5 6 7 8 9 10 ho acquisito 10 numeri quindi mi fermo

Suggerimento: scrivere innanzitutto una versione semplificata scegliendo una singola direzione di monotonia (o crescente o decrescente), quindi passare alla soluzione completa.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 24

Si scriva un programma Java che:

a. legga un vettore di N elementi interi (con N costante predefinita)

b. determini se gli elementi di tale vettore costituiscono una successione palindroma.

Suggerimento: una successione si dice palindroma se e' identica letta da sinistra verso destra o da destra verso sinistra.

Esempio: le seguenti successioni di valori sono palindrome:

12 3 12

1 4 5 4 1

10 10 10

mentre la seguente non è palindroma:

1 3 4 3 2

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 25

Si scriva un programma Java che:

a. legga 2 vettori di N elementi interi (con N costante predefinita)

b. stabilisca se i due vettori contengono gli stessi elementi,

anche disposti in ordine differente

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 26

Scrivere un programma Java che scandisca un vettore di N valori

interi, e determini se esiste una serie crescente di tre numeri

consecutivi. In caso positivo, il programma deve stampare la serie

di numeri e la posizione del primo valore.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 27

Si scriva un programma Java che analizzi il contenuto di un vettore

di dati tutti positivi alla ricerca di valori duplicati. Il programma

dovrà in particolare:

a. Acquisire i valori del vettore da tastiera. L’acquisizione termini

con l’introduzione un valore negativo, che non deve essere

memorizzato.

b. Entrare in un ciclo in cui chiede l’introduzione di un valore, e

fornire in un secondo vettore le posizioni in cui viene trovato

quel valore nel primo vettore, se presente. Il ciclo termini con

l’introduzione di un valore negativo.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 28

Si scriva un programma Java che legga da tastiera due numeri interi corrispondenti a base ed esponente, ed esegua il calcolo della potenza 𝑏𝑎𝑠𝑒𝑒𝑠𝑝𝑜𝑛𝑒𝑛𝑡𝑒. Il programma deve invocare una funzione chiamata power dal main, con la seguente firma:

public int power(int base, int exponent);

Esempio: siano dati i seguenti valori

base=3

exponent=2

Il risultato di 𝑏𝑎𝑠𝑒𝑒𝑠𝑝𝑜𝑛𝑒𝑛𝑡𝑒 sarà 9.

In un altro caso con

base=2

exponent=3

Il risultato di 𝑏𝑎𝑠𝑒𝑒𝑠𝑝𝑜𝑛𝑒𝑛𝑡𝑒 sarà 8.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 29

Si scriva un programma Java che, dati due vettori di uguale dimensione N (vbase e vexponent), elevi ciascun elemento del vettore vbase alla potenza indicata nell’elemento di vexponent avente lo stesso indice (ossia vbase[i] elevato a vexponent[i]). I risultati dovranno essere memorizzati nella corrispondente posizione di un terzo vettore denominato vres. Si utilizzi la funzione power definita nel corso del precedente esercizio

Vengano inseriti prima i valori delle N basi e poi quelli degli N esponenti; vengano alla fine visualizzati i valori di vres.

Esempio

Siano inseriti dall’utente i valori seguenti (per N pari a 5):

vbase 5 2 7 4 9

vexponent 2 6 1 8 3

Il vettore risultato sarà il seguente:

vres 25 64 7 65536 729

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 30

Scrivere un programma ParoleQuasiUguali che chiede all'utente di

inserire due singole parole e stampa Sono uguali! se le due parole

sono uguali, Sono quasi uguali! se le due parole differiscono solo

per l'uso di maiuscolo e minuscole, Non sono uguali! altrimenti..

Consultare la documentazione ufficiale della Libreria Standard di

Java per individuare e capire quali metodi usare.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 31

Scrivere un programma ParoleMisteriose che crea e inizializza un

array di stringhe contenete 5 parole a piacere (usando il comando di inizializzazione che prevede la lista dei valori tra parentesi graffe)

e chiede all'utente di indovinare una tra le 5 parole entro 3

tentativi.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 32

Modificare l'esercizio precedente in modo che se l'utente indovina

una parola il programma stampi l'elenco delle altre parole

misteriose, mentre se l'utente sbaglia stampi tutte e 5 le parole

misteriose

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 33

Scrivere un programma modulare Memo che, utilizzando un array,

legge 10 stringhe e poi mette a disposizione un menu con le

seguente opzioni:

[S] Stampa stringhe dalla posizione ... alla ...

[M] Modifica stringa in posizione ...

[T] Trova posizione della stringa ...

[E] Esci

(continua…)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 33

Il menu viene proposto ripetutamente all'utente, fino a quando viene selezionata l'uscita dal programma (opzione E).

Il significato delle operazioni e il seguente:

se l'utente sceglie S, il programma legge due posizioni n e m e stampa tutti gli elementi dell'array il cui indice e compreso tra n e m;

se l'utente sceglie M, il programma legge una posizione n e una stringa s che assegna alla cella n dell'array;

se l'utente sceglie T, il programma legga una stringa s e stampa la prima posizione dell'array che la contiene, o un messaggio di errore se nessuna cella la contiene;

se l'utente sceglie E, il programma stampa il contenuto dell'array e termina.

Ognuna delle operazioni (tranne [E]) deve essere realizzata da un metodo(funzione) diverso che realizza quanto indicato.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 34

Si scriva un programma in grado di manipolare gli elementi di un vettore di interi. Tale programma, dopo aver acquisito il contenuto del vettore, invoca due funzioni:

a. avgVect: calcola la media degli elementi del vettore, restituendo tale valore alla funzione chiamante;

b. upperLimit: conta il numero di elementi che hanno valore superiore ad un certo limite, restituendolo alla funzione chiamante.

Il programma deve infine visualizzare la media dei valori del vettore e il numero di elementi che superano la media.

Suggerimento: per la funzione mediaVett la firma sarà:

float avgVect (int v[]);

mentre per la funzione superanoLimite la firma sarà:

int upperLimit (int v[], float limit);

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 35

Si scriva un programma che acquisisca 2 stringhe corrispondenti a 2 orari

nel formato hh:mm. Il programma deve:

a. Controllare le stringhe, segnalando i casi in cui il formato non sia

rispettato (ad esempio 10,30 non è valido)

b. Stabilire se l’orario contenuto nella prima stringa è precedente a

quello contenuto nella seconda stringa

c. In caso affermativo, tradurre i 2 orari in valori interi corrispondenti

all’orario espresso come distanza in minuti da 00:00 e calcolarne la differenza

d. Convertire il risultato (sarà un numero intero positivo) in una stringa

così composta “<intervallo calcolato>_minuti” e la stampi a video.

Suggerimento:

Utilizzare l’oggetto Character (vedi documentazione) per le verifiche opportune

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 36

Si scriva un programma Java che: legga da tastiera (per righe o per colonne, a scelta) una matrice quadrata di dimensione uguale a 5 righe e 5 colonne rintracci se tale matrice contiene delle sequenze di elementi adiacenti uguali a zero di lunghezza uguale o maggiore di 3 visualizzi l'indice di riga in cui tali sequenze si presentano.

Esempio.

Sia la matrice la seguente:

0 0 0 4 5

1 2 0 4 5

1 0 0 4 0

1 2 3 4 5

1 0 0 0 0

La sequenza di valori "0 0 0" compare nella prima e nell'ultima riga e quindi occorre riportare una indicazione del tipo:

La sequenza compare nella riga 1

La sequenza compare nella riga 5

Si osservi che la riga 3 non contiene la sequenza indicata in quanto i tre zeri non si trovano in posizioni contigue.

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 37

Scrivere un programma per consultare una base dati meteorologica secondo le seguenti specifiche.

La base dati consiste in un file di testo chiamato “meteo.dat”. Ogni riga descrive una misura nel formato

NOME_COMUNE DATA_MISURA TEMPERATURA_MISURATA

Il nome del comune non contiene spazi. La data della misura è nel formato GG/MM/AAAA. La temperatura è un numero reale. I dati sono separati da uno spazio. Non si deve assumere nessun ordinamento per le righe. Il numero di righe non è noto a priori. Ad esempio:

Acquaviva_delle_Fonti 12/04/1972 25.002

Acquaviva_delle_Fonti 12/03/1980 19.4

Binetto 23/11/1999 19.4

Cassano_delle_Murge 12/11/2010 12.495

Acquaviva_delle_Fonti 15/08/1979 37.2

(continua…)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 37

Si desidera realizzare un programma per visualizzare la temperatura media in una determinata località. Il programma riceve come unico parametro sulla linea di comando il nome di un comune e deve visualizzare sullo schermo:

La media delle temperature nella località

La temperatura massima ed il nome del mese e l’anno in cui è stata registrata

La temperatura minima ed il nome del mese e l’anno in cui è stata registrata

Ad esempio:

C:\> java Prog Acquaviva_delle_Fonti

Temperatura media a Acquaviva_delle_Fonti: 27.2066667

Temperatura massima: 37.2 (Agosto 1979)

Temperatura minima: 19.4 (Marzo 1980)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 38

Si vuole realizzare un programma Java per la gestione delle prenotazioni di un teatro. Il programma legge da due file le informazioni necessarie alla generazione della mappa dei posti del teatro.

Un primo file, il cui nome è passato come primo argomento sulla riga di comando, contiene le informazioni sulle prenotazioni richieste. Ogni riga del file richiede la prenotazione di un posto, nel formato

<fila> <posto>

Un secondo file di testo, il cui nome è passato come secondo argomento sulla riga di comando, riporta la configurazione iniziale del teatro, ed e’ rappresentato come una serie di caratteri identificanti lo stato dei singoli posti. La prima riga del file si riferisce alla fila 1, il primo carattere al posto 1. Tutte le file hanno lo stesso numero di posti. Il singolo posto può avere uno tra i seguenti tre possibili valori:

’0’ posto libero

’X’ posto occupato

’R’ riservato (non prenotabile)

Il teatro ha 10 file da 30 posti ciascuna. Si assuma che le prenotazioni siano tutte corrette (<fila> compresa tra 1 e 10, e <posto> compreso tra 1 e 30). Il programma deve leggere il file di configurazione iniziale del teatro ed elaborare le prenotazioni nell’ordine indicato nel file. Per ciascuna prenotazione, deve indicare se è soddisfacibile, ed in caso affermativo modificare la configurazione dei posti nella mappa. In caso negativo, stampare il motivo per cui la richiesta non può essere soddisfatta.

Alla fine il programma deve stampare su schermo la configurazione finale del teatro e salvarla sul file da cui era stata letta. (continua…)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 38

A titolo di esempio, si supponga che il programma venga chiamato PRENOTAZIONI, il file contenente la mappa mappa.txt, ed il file delle richieste richieste.txt.

Invocando il programma come:

java Prenotazioni richieste.txt mappa.txt

e supponendo che i file abbiano il seguente contenuto:

mappa.txt richieste.txt

0000000000RRRRRRRRRR0000000000 1 9

000000000000000000000000000000 1 10

000000000000000000000000000000 1 11

000000000000000000000000000000 2 13

000000000000000000000000000000 2 14

000000000000000000000000000000 3 16

000000000000000000000000000000 2 13

000000000000000000000000000000

R0000000000000000000000000000R

R0000000000000000000000000000R

(continua…)

Alfonso Lentini

Dott. in Ingegneria Informatica

ESERCIZIO 38

il programma genererà il seguente output:

Richiesta 1: Fila 1 Posto 9: prenotato

Richiesta 2: Fila 1 Posto 10: prenotato

Richiesta 3: Fila 1 Posto 11: non prenotato (riservato)

Richiesta 4: Fila 2 Posto 13: prenotato

Richiesta 5: Fila 2 Posto 14: prenotato

Richiesta 6: Fila 3 Posto 16: prenotato

Richiesta 7: Fila 2 Posto 13: non prenotato (occupato)

E riscriverà, alla fine, il file mappa.txt come segue:

00000000XXRRRRRRRRRR0000000000

0000000000X0XX0000000000000000

000000000000000X00000000000000

000000000000000000000000000000

000000000000000000000000000000

000000000000000000000000000000

000000000000000000000000000000

000000000000000000000000000000

R0000000000000000000000000000R

R0000000000000000000000000000R

Alfonso Lentini

Dott. in Ingegneria Informatica