ESERCITAZIONI IN JAVA -...
Transcript of ESERCITAZIONI IN JAVA -...
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