Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 1, 9 CFU => Topic started by: Giuseppo on 23-11-2008, 11:26:57



Title: Esercizio sulle stringhe
Post by: Giuseppo on 23-11-2008, 11:26:57
Quando abbiamo visto la classe String e i suoi metodi, abbiamo anche visto questo esercizio:

 Solo per i più bravi !
– Scrivere una funzione che presa in
input una stringa, fornisca tutti i
possibili anagrammi della stringa
(ovvero, tutte le possibili
permutazioni dei caratteri contenuti
nella stringa).
 È conveniente usare la ricorsione !

Il prof. Cincotti ha detto che senza conoscere "cose che faremo più avanti" è molto difficile farlo....mi sembra ovvio che si debbano usare le permutazioni...qualcuno è riuscito a farlo??


Title: Re:Esercizio sulle stringhe
Post by: Fr3d3R!K on 23-11-2008, 11:55:57
non so immaginare un programma simile senza ricorsione .huh comunque non è impossibile. Innanzitutto ti crei il metodo Fattoriale(String stringa) per calcolare le permutazioni dopodichè ti serve il metodo Anagramma(String stringa) che trasforma la stringa in un array di char (col metodo toCharArray()) e poi scambia gli elementi tra di loro in un ciclo for che va da 0 a stringa.length (puoi fare che li scambi ad uno ad uno tipo bubblesort e poi e di volta in volta li memorizzi in una sottostringa che dai in pasto ad Anagramma così si troverà stringhe diverse). Appena ho un minuto magari abbozzo un sorgentucolo...
Spero che comunque questo "resoconto" sia abbastanza chiaro .smile
Saluti .ciaociao


Title: Re:Esercizio sulle stringhe
Post by: JF on 23-11-2008, 12:24:45
Occorre fare una distinzione: anagrammi con o senza ripetizioni? ("ciao" non ne ha, "casa" sì)

Un metodo di procedere molto semplice sarebbe:

* Creo un elenco di tutte le lettere della parola (banale senza ripetzioni)
* Per ogni lettera
 - La metto all'inzio di una sottostringa
 - Chiamo il metodo per gli anagrammi ricorsivamente sulla sottostringa dalla seconda lettera alla fine
* Se la sottostringa corrente è di lunghezza 1, la scrivo su stdout

Per eliminare la ricorsione, per grandi linee potremmo dire che la chiamata ricorsiva va sostituita con un ciclo for esterno che cicla sulla lunghezza della sottostringa. Ma non c'è motivo di complicarsi così la vita...


Title: Re:Esercizio sulle stringhe
Post by: Fr3d3R!K on 23-11-2008, 13:09:28
eh, a grandi linee un pò quello che ho detto pure io...
P.S. siccome mi scocciavo a scrivere il codice ho googlato un po' ed ho trovato un esempio su un forum, precisamente qui (http://hackerforum.devil.it/viewtopic.php?t=7278). Dovrebbe andare.
Saluti. .ciaociao


Title: Re:Esercizio sulle stringhe
Post by: LtWorf on 26-11-2008, 17:11:31
Tempo fa avevo postato una soluzione, che però non è esattamente.. perfetta
link al vecchio forum (http://www.dmi.unict.it/u2/index.php?option=com_joomlaboard&Itemid=26&func=view&view=flat&id=288&catid=6)


Title: Re:Esercizio sulle stringhe
Post by: Giuseppo on 27-11-2008, 17:17:54
per favore potreste postare un codice?  .poverinoi


Title: Re:Esercizio sulle stringhe
Post by: Fr3d3R!K on 27-11-2008, 17:45:05
guarda che i codici ci sono e li abbiamo pure linkati. Se poi mi dici che non sai aprire un link cambia facoltà!!! .wink


Title: Re:Esercizio sulle stringhe
Post by: Aigor on 27-11-2008, 17:49:18
Inoltre aggiungo che aspettare o studiare sul codice altrui non è mai un ottima cosa!! Prova a fare il tuo codice o almeno il tuo pseudo codice e poi dopo fatti aiutare o consigliare, se non riesci a venirne a capo! Avere il lavoro già pronto è bello sicuramente, ma poco utile ....


Title: Re:Esercizio sulle stringhe
Post by: Giuseppo on 27-11-2008, 18:02:00
no l'ho provato ma non compila


Title: Re:Esercizio sulle stringhe
Post by: Fr3d3R!K on 27-11-2008, 18:05:24
se dà errori di compilazioni scrivili qui che proviamo ad aiutarti e correggerli. Se direttamente non compila il problema è qualche impostazione sbagliata (tipo il path) nel tuo "compiuteh" .wink


Title: Re:Esercizio sulle stringhe
Post by: Giuseppo on 27-11-2008, 18:10:12
ecco l'errore

>javac Anagrammi.java
Anagrammi.java:83: reached end of file while parsing
   }----qui sono scritti SUB NUL NUL.....cioè caratteri non visualizzabili-----
    ^
1 error
>Exit code: 1


Title: Re:Esercizio sulle stringhe
Post by: Fr3d3R!K on 27-11-2008, 20:17:52
ha trovato una parentesi graffa dove non dovrebbe starci..probabilmente nella riga 83 (ma potrebbe essere anche nella riga prima o dopo).


Title: Re:Esercizio sulle stringhe
Post by: Giuseppo on 29-11-2008, 10:08:30
ci vuole una parentisi graffa in più alla fine....ora compila ma nell'esecuzione dice


>java Anagrammi
java.lang.NoSuchMethodError: main
Exception in thread "main" >Exit code: 1


Title: Re:Esercizio sulle stringhe
Post by: ɹǝǝuıƃuǝsɹǝʌǝɹ on 29-11-2008, 12:04:34
Impariamo a leggere gli errori del compilatore e a comprenderli tramite la documentazione .smile.

L'errore NoSuchMethodError viene rilevato quando viene richiamato un metodo del quale non si trova (più) la definizione (fonte (http://java.sun.com/javase/6/docs/api/java/lang/NoSuchMethodError.html)). Nel tuo caso particolare, l'errore NoSuchMethodError: main indica che non c'è un metodo di nome main nel tuo codice, almeno non dove chi lo sta chiamando se lo aspetta (cioè nella classe pubblica del file passato al compilatore).

Ciao .ciaociao.


Title: Re:Esercizio sulle stringhe
Post by: Fr3d3R!K on 29-11-2008, 19:49:20
il main fallo in un altra classe pubblica (un'altro file dal quale passi la stringa da anagrammare).