Visualizzazione dei risultati da 1 a 7 su 7

Discussione: ricorsione

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    ricorsione

    Ciao a tutti,
    oggi tocca alla ricorsione...
    ho il seguente metodo nella mia classe..

    void stampaStringheLunghe(BufferedReader b, int n, boolean inverso)
    deve leggere dal BufferedReader b delle stringhe memorizzate una su ciascuna riga e stampare su schermo le sole stringhe di lunghezza maggiore di n, nell'ordine in cui compaiono nel file (se il parametro inverso è false), oppure nell'ordine inverso in cui compaiono nel file (se il parametro inverso è true).

    se per es il mio file è :
    per
    mondo
    tre
    ciao
    serata
    cavolo
    sul
    forza
    in caso venga passato false stamperà :
    mondo
    serata
    cavolo
    forza
    se viene passato true li stamperà in ordine inverso :
    forza
    cavolo
    serata
    mondo

    il mio metodo main penso vada bene, ho problemi nel fare questo metodo perchè devo usare la ricorsione.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Cioè in altre parole, ti manca il succo del programmino... che cosa hai prodotto fin'ora (a parte il main...). Stai applicando il classico modo di procedere, ovvero dividendo in sotto problemi più semplici?
    Non avendo altre specifiche, immagino una soluzione che preveda l'utilizzo di un ArrayList o più semplicemente di un Vector per contenere le String estratte dal file con il metodo readLine di BufferedReader che rispondano al requisito di lunghezza, e quindi un ciclo for per la stampa...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    il mio main è il seguente :
    codice:
    try {
                    FileReader f = new FileReader("prova.txt");
                    BufferedReader b = new BufferedReader(f);
                    Eserc2.stampaStringheLunghe(b, 4, false);
                    f.close();
                    System.out.println();
                    f = new FileReader("prova.txt");
                    b = new BufferedReader(f);
                    Eserc2.stampaStringheLunghe(b, 4, true);
                    f.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    mi serve per provare alcune cose, ora però devo risucire a fare il metodo che dicevo prima in maniera ricorsiva e non so come fare...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Originariamente inviato da Andrea1979
    Cioè in altre parole, ti manca il succo del programmino... che cosa hai prodotto fin'ora (a parte il main...). Stai applicando il classico modo di procedere, ovvero dividendo in sotto problemi più semplici?
    Non avendo altre specifiche, immagino una soluzione che preveda l'utilizzo di un ArrayList o più semplicemente di un Vector per contenere le String estratte dal file con il metodo readLine di BufferedReader che rispondano al requisito di lunghezza, e quindi un ciclo for per la stampa...
    Oh, aspetta, si parla di ricorsione... e che ci devi mettere in un metodo ricorsivo con un BufferedReader? La lettura ricorsiva del file? Se proprio bisogna fare una, passamela, porcata del genere, almeno usiamo gli strumenti adatti (e BufferedReader di certo non lo è)... o la ricorsione si limita alla presentazione dei dati finali? Qui (TI) urge chiarimento con il tuo professore.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Andrea il testo è questo :

    Scrivere una classe pubblica Eserc2, contenente un metodo pubblico statico e ricorsivo
    void stampaStringheLunghe(BufferedReader b, int n, boolean inverso), che legga dal BufferedReader b delle stringhe memorizzate una su ciascuna riga e stampi su schermo le sole stringhe di lunghezza maggiore di n, nell'ordine in cui compaiono nel file (se il parametro inverso è false), oppure nell'ordine inverso in cui compaiono nel file (se il parametro inverso è true).
    Il metodo deve essere ricorsivo, quindi non si possono usare istruzioni di ciclo.

    infatti sul tuo termine sono pienamente d'accordo anche io perchè ci sarebbero modi molto più semplic per farlo, però bisogna farlo per usare la ricorsione...boh..

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Il problema è nella lettura all'indietro nel caso ci sua da invertire l'ordine perché, vado a memoria, BufferedReader non contempla l'opzione di leggere all'indietro. Per il resto non è un grosso problema: una volta che hai letto una riga e l'hai stampata se risponde alla specifica di lunghezza, ripassi il BufferedReader e gli altri parametri al tuo metodo finquando readLine ritorna null
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Se la lettura è normale:
    - leggi la stringa da BufferedReader (mettendola in una variabile locale);
    - se rispetta i vincoli, la stampi;
    - richiami il metodo ricorsivamente.

    Se la lettura è inversa:
    - leggi la stringa da BufferedReader (mettendola in una variabile locale);
    - richiami il metodo ricorsivamente;
    - solamente quando è ritornato, se rispetta i vincoli, la stampi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.