[SOL] Java - Esercizio nr. 63
Spiegazione del Programma Palindromo
Cosa fa questo programma?
Questo programma Java controlla se una sequenza di numeri inseriti dall'utente forma un palindromo. Un palindromo è una sequenza che si legge allo stesso modo sia da sinistra verso destra che da destra verso sinistra.
Analisi del codice
import java.util.Scanner;
public class Palindromo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Fase 1: Preparazione
Il programma inizia importando la classe Scanner per leggere l'input dell'utente e creando un oggetto input per gestire l'inserimento dei dati.
System.out.print("Quanti numeri vuoi inserire? ");
int n = input.nextInt();
int[] numeri = new int[n];
Fase 2: Dimensionamento dell'array
- Chiede all'utente quanti numeri vuole inserire
- Crea un array di interi chiamato
numericon la dimensione specificata
// Caricamento
for (int i = 0; i < n; i++) {
System.out.print("Inserisci il numero " + (i + 1) + ": ");
numeri[i] = input.nextInt();
}
Fase 3: Caricamento dei dati
Un ciclo for riempie l'array chiedendo all'utente di inserire un numero alla volta. Nota che (i + 1) serve per mostrare "numero 1", "numero 2", ecc. invece di "numero 0", "numero 1".
// Controllo palindromo
boolean palindromo = true;
for (int i = 0; i < n / 2; i++) {
if (numeri[i] != numeri[n - 1 - i]) {
palindromo = false;
}
}
Fase 4: Controllo del palindromo
Questa è la parte più importante del programma:
- Variabile
palindromo: inizialmente impostata atrue, diventafalsese trova una differenza - Ciclo ottimizzato: controlla solo fino a
n / 2perché confronta gli elementi simmetrici - Confronto simmetrico:
numeri[i]viene confrontato connumeri[n - 1 - i]
Come funziona il confronto simmetrico?
- Se l'array ha 5 elementi (indici 0,1,2,3,4):
i=0: confrontanumeri[0]connumeri[4]i=1: confrontanumeri[1]connumeri[3]i=2: si ferma perché2 < 5/2è falso
// Risultato
if (palindromo) {
System.out.println("L'array e' palindromo");
} else {
System.out.println("L'array NON e' palindromo");
}
input.close();
Fase 5: Visualizzazione del risultato
- Stampa il risultato basandosi sul valore della variabile
palindromo - Chiude lo
Scannerper liberare le risorse
Esempi pratici
Esempio 1 - Palindromo
Input: 1, 2, 3, 2, 1
Controlli:
1 == 1✓2 == 2✓ Risultato: "L'array e' palindromo"
Esempio 2 - Non palindromo
Input: 1, 2, 3, 4, 5
Controlli:
1 != 5✗ Risultato: "L'array NON e' palindromo"
Punti chiave da ricordare
- Il programma è efficiente perché controlla solo metà degli elementi
- Usa una strategia di confronto simmetrico per verificare il palindromo
- La variabile
palindromofunziona come una bandiera (flag) che cambia stato quando trova una differenza
import java.util.Scanner;
public class Palindromo {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Quanti numeri vuoi inserire? ");
int n = input.nextInt();
int[] numeri = new int[n];
// Caricamento
for (int i = 0; i < n; i++) {
System.out.print("Inserisci il numero " + (i + 1) + ": ");
numeri[i] = input.nextInt();
}
// Controllo palindromo
boolean palindromo = true;
for (int i = 0; i < n / 2; i++) {
if (numeri[i] != numeri[n - 1 - i]) {
palindromo = false;
}
}
// Risultato
if (palindromo) {
System.out.println("L'array e' palindromo");
} else {
System.out.println("L'array NON e' palindromo");
}
input.close();
}
}