import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class RicorsioneAvanzata { public static void main(String[] args) throws IOException { //Copia Inversa System.out.println("Eseguo copia inversa sul file copiaInversa.txt"); //Inizialliziamo il BufferedReader FileReader fr = new FileReader("copiaInversa.txt"); BufferedReader br = new BufferedReader(fr); //chiamata alla funzione copiaInversa copiaInversa(br); System.out.println("************************"); //Interi simmetrici System.out.println("Controllo se il file interiNonSimmetrici contiene una sequenza di interi simmetrica"); //Inizialliziamo il BufferedReader fr = new FileReader("interiNonSimmetrici.txt"); br = new BufferedReader(fr); //chiamata alla funzione interiSimmetrici boolean sim = interiSimmetrici(br); //stampa risultato System.out.println("La sequenza di interi "+((sim)?" e'":" non e'")+" simmetrica."); System.out.println("************************"); br.close(); fr.close(); //Interi simmetrici System.out.println("Controllo se il file interiInversi.txt contiene una sequenza di interi inversi"); //Inizialliziamo il BufferedReader fr = new FileReader("interiInversi.txt"); br = new BufferedReader(fr); //chiamata alla funzione interiInversi boolean inv = interiInversi(br); //stampa risultato System.out.println("Gli interi "+((inv)?" sono":" non sono")+" inversi."); System.out.println("************************"); br.close(); fr.close(); //Interi simmetrici System.out.println("Stringa Palindroma, inerire una stringa:"); //leggiamo una string da input Scanner sc = new Scanner(System.in); String s = sc.nextLine(); //chiamata alla funzione stringaPalindroma boolean pal = stringaPalindroma(s); //stampa risultato System.out.println("La stringa "+ s +((pal)?" e'":" non e'")+" palindroma."); System.out.println("************************"); } /** * Scandisce il file di interi gestito da br e ritorna true * se il file contiene una sequenza di interi simmetrica *
* Il file rappresenta una sequenza di interi con al centro uno 0 * * @param br il riferimento al BufferedReader che gestisce il file * @return true se il file contiene una sequenza di interi simmetrica false altrimenti * @throws IOException * */ public static boolean interiSimmetrici(BufferedReader br) throws IOException { String line = br.readLine(); int n = Integer.valueOf(line); if (n==0){ return true; } else { boolean sim = interiSimmetrici(br); String line2 = br.readLine(); int m = Integer.valueOf(line2); return ((sim) && (m == n)); } } /** * Scandisce il file di interi gestito da br e ritorna true * se il file contiene una sequenza di interi in cui il primo intero e' inverso dell'ultimo e cosi' via * a e' inverso a b se a+b =0 * Es: 1 2 4 0 -4 -2 -1 e' una seq di interi simmetrici ed inversi *
* Il file rappresenta una sequenza di interi con al centro uno 0 * * @param br il riferimento al BufferedReader che gestisce il file * @return true se il file contiene una sequenza di interi inversi false altrimenti * @throws IOException * */ public static boolean interiInversi(BufferedReader br) throws IOException { System.out.println("Metodo non implementato"); return false; } /** * Scandisce la stringa s e ritorna true * se la string e' palindroma * * @param s la stringa * @return true se s e' palindroma * */ public static boolean stringaPalindroma(String s) { System.out.println("Metodo non implementato"); return false; } /** * Scandisce il file di stringhe gestito da br e stampa le stringhe con ordine inverso * * @param br il riferimento al BufferedReader che gestisce il file * @throws IOException * */ public static void copiaInversa(BufferedReader br) throws IOException { String s = br.readLine(); if (s!=null){ copiaInversa(br); System.out.println(s); } } }