Corso di Informatica
(Programmazione)
Esercitazione 4 (10 dicembre 2008)
1
Esercizi sugli array
Esercizio 1
dato un array A di N caratteri verificare
se la sequenza che contiene è palindroma
Esempio (N=10)
A
a
b
c
d
e
e
d
c
b
a
Risultato  la sequenza abcdeedcba
è palindroma
2
Esercizi sugli array
Algoritmo: per verificare che una sequenza di
caratteri è palindroma basta verificare che vale
A[i] uguale a A[N-i-1] per ogni i che va da 0
a N/2-1. Cioè basta verificare che ogni carattere
della sequenza è uguale al suo simmetrico rispetto
al centro della sequenza. Ciò vale sia per N pari
che per N dispari.
Dichiaro quindi la variabile booleana isP...
3
Esercizi sugli array
…che all’inizio ha valore true (parto cioè
dall’ipotesi che la sequenza sia palindroma). Poi
scandisco l’array dal primo elemento (in posizione
0) all’elemento in posizione N/2-1. Se trovo che
per la generica posizione i, A[i] è diverso da
A[N-i-1] allora assegno il valore false alla
variabile isP e interrompo la scansione.
4
Esercizi sugli array
public class Palindroma {
public static void main(String arg[]) {
char[] A={‘a’,’b’,’c’,’d’,’e’,’e’,’d’,’c’,’b’,’a’};
int i;
int length;
boolean isP=true;
length=10;
i=0;
while(i <= lentgth/2-1 && isP == true){
if(A[i]!=A[length-i-1]){
isP=false;
}
i=i+1;
}
System.out.print(“Palindroma: “+isP);
}
}
5
Esercizi sugli array
Esercizio 2
dato un array A di N interi verificare
che gli elementi in posizione pari sono pari
e quelli in posizione dispari sono dispari
Esempio (N=10)
A
2
3 56 11 20 9 24 21 22 67
Risultato  nelle posizioni 0,2,4,6,8 gli elementi sono
pari e nelle posizioni 1,3,5,7,9 gli elementi sono dispari
6
Esercizi sugli array
Algoritmo: dichiaro la variabile booleana
evenOdd che all’inizio ha valore true (faccio cioè
l’ipotesi che l’array abbia elementi pari in
posizione parti ed elementi dispari in posizione
dispari. Poi scandisco l’array dal primo elemento
(in posizione 0) all’ultimo elemento (in posizione
N-1). Se trovo che per la generica posizione i,
A[i] è pari se i è dispari oppure A[i] è dispari...
7
Esercizi sugli array
…se i è pari, allora assegno il valore false alla
variabile evenOdd e interrompo la scansione.
8
Esercizi sugli array
public class PariDispari {
public static void main(String arg[]) {
int[] A={2,13,16,21,42,25,28,31,44,11};
int i;
int length;
boolean evenOdd=true;
length=10;
i=0;
while(i <= lentgth-1 && evenOdd == true){
if((i%2==1 && A[i]%2==0) || (i%2==0 && A[i]%2==1)){
isP=false;
}
i=i+1;
}
System.out.print(“Palindroma: “+isP);
}
}
9
Esercizi sugli array
Esercizio 3
dati due array A e B rispettivamente di N
N e M interi, verificare che tutti gli
elementi di B sono contenuti in A
Esempio (N=10, M=5)
A
2
B
56 2 21 9 67
3 56 11 20 9 24 21 22 67
10
Esercizi sugli array
Algoritmo: dichiaro la variabile booleana allIn
che ha valore iniziale true (faccio l’ipotesi che
tutti gli elementi di B siano contenuti in A.
Scandisco l’array B dal primo elemento
(in posizione 0) all’ultimo (in posizione M-1).
Se per la generica posizione i trovo che B[i] non
è contenuto in A, allora assegno il valore false
alla variabile allIn e interrompo la scansione...
11
Esercizi sugli array
…su B. L’algoritmo presenta due cicli: uno per
scandire B e uno più interno che verifica se il
generico elemento B[i] è contenuto in A. Quindi
esiste una seconda variabile booleana found
che gestisce la verifica precedente (vedere
Esercizio 3 dell’Esercitazione 3).
12
Esercizi sugli array
public class PariDispari {
public static void main(String arg[]) {
int[] A={2,13,16,21,42,25,28,31,44,11};
int[] B={21,13,28,11,44};
int i, j;
int lengthA, lengthB;
boolean allIn=true, found=false;
lengthA=10;
lengthB=5;
i=0;
while(i <= lentgthB-1 && allIn == true){
j=0;
found=false;
while(j <= lengthA-1 && found == false){
if(B[i]==A[j]){
found=true;
}
j=j+1;
}
==>(continua)
13
Esercizi sugli array
<==(continua)
if(found == false){
allIn=false;
}
i=i+1;
}
System.out.print(“B contenuto in A: “+allIn);
}
}
14
Scarica

ProgrammazioneES4