Esercizi del 31/5/05

Transcript

Esercizi del 31/5/05
Cifratura a trasposizione di
alfabeto
Esercizio 14.2
Esercizio P14.2
ƒ
Scrivete un programma che
„
„
„
Legge da un file di testo, un carattere alla volta
Cifra un carattere alla volta, usando un cifrario
KeyWord
Scrive in un file i caratteri cifrati, uno alla volta
Esercizio P14.2
„
Il KeyWordCipher usa come chiave una stringa:
‰
Elimina le lettere duplicate dalla chiave
„
‰
‰
Chiave: VISIT Æ VIST
Accoda le altre lettere dell’alfabeto
Effettua la sostituzione carattere per carattere
N E X T
plaintext
ciphertext
A
B
C
D
E
F
G
H
I
J
K
L
M
V
I
S
T
A
B
C
D
E
F
G
H
J K
N
O
L
P
Q
R
S
T
U
V
W
X
Y
Z
M
N
O
P
Q
R
U
W
X
Y
Z
K A X Q
Esercizio P14.2
ƒ
ƒ
Scriviamo un programma Crypt che testa la
classe precedente
Legge da riga di comando
‰
‰
‰
‰
„
L’opzione –d per decifrare
L’opzione –kCHIAVE
Il nome del file da cifrare
Il nome del file di ouput (cifrato)
Esempio:
‰
‰
java Crypt –kVISIT input.txt encrypted.txt
java Crypt –d –kVISIT encrypted.txt decrypted.txt
Esercizio 14.2
„
Soluzione la prossima settimana…
Esame del 2 settembre 2004
Gestione contratti telefonici
Gestione contratti telefonici
Definire la classe ContrattoTelefonico che
specifica un tipo di contratto telefonico
caratterizzato da intestatario e numero telefonico e
che fornisce i seguenti metodi:
„
‰
‰
‰
il costruttore ContrattoTelefonico(String intestatario, String
numeroTel)
stampaDati() che stampa i dati del contratto telefonico
getCostoMedio(int numMinCostosi, int
numMinEconomici), che restituisce il costo medio per
minuto di una telefonata. Gli argomenti numMinCostosi e
numMinEconomici specificano rispettivamente il numero
di minuti di conversazione nella fascia costosa ed
economica.
Gestione contratti telefonici (2)
„
Definire tre sottoclassi 24Ore, Weekend, e Serale. Il
contratto 24Ore non ha scatto alla risposta e il costo
al minuto è di 25 centesimi. Per il contratto
Weekend il costo dello scatto alla risposta è di 10
centesimi e il costo al minuto è di 30 centesimi dal
lunedì al venerdì (fascia costosa) e 15 centesimi nel
weekend (fascia economica). Per il contratto Serale
il costo dello scatto alla risposta è di 10 centesimi e
il costo al minuto dalle 8:00 alle 18:00 è di 45
centesimi (fascia costosa), e dalle 18:00 alle 8:00 è
di 15 centesimi (fascia economica).
Gestione contratti telefonici (3)
Definire la classe ElencoContratti che
rappresenta l’elenco di contratti stipulati da
una compagnia telefonica e che fornisce i
seguenti metodi:
„
‰
‰
‰
Un costruttore che crea un elenco vuoto
addContratto(ContrattoTelefonico c) che
inserisce un contratto nell’elenco
getIntestatari(char init), che restituisce un
ArrayList di tutti i contratti i cui intestatari hanno
un nome che inizia con il carattere init.
Testiamo le classi…
„
Scrivere un programma di test, che crea un
oggetto della classe ElencoContratti e lo
riempie con 10 contratti i cui identificativi e
numeri telefonici sono specificati da tastiera.
Infine, il programma deve stampare i dati di
tutti i contratti i cui intestatari hanno un
nome che inizia con la lettera A.
Modifichiamo il codice per…
„
„
Poter cercare tutti gli intestatari di un
ContrattoTelefonico il cui nome cominci per una
stringa init
L’applicazione di Test:
‰
‰
‰
„
permette di cercare intestatari il cui nome cominci per una
qualsiasi stringa
Procedura di inserimento che termini con input -1 da
tastiera
Salvare in un file l’elenco degli abbonati della compagnia
telefonica
Soluzioni per rendere non abstract il metodo
getCostoMedio nella classe ContrattoTelefonico