Pages: [1]   Go Down
Print
Author Topic: Esercizio sulle stringhe  (Read 4439 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Giuseppo
Apprendista Forumista
**
Offline Offline

Posts: 198



« 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??
Logged

I have nothing to declare except my genius.
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #1 on: 23-11-2008, 11:55:57 »

non so immaginare un programma simile senza ricorsione 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
Saluti
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
JF
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 383



WWW
« Reply #2 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...
Logged

Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #3 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. Dovrebbe andare.
Saluti.
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
LtWorf
Forumista Esperto
****
Offline Offline

Posts: 1.079

Ogni cosa da me scritta è da intendersi come opinione personale e non come dato di fatto. Anche le eventuali dimostrazioni matematiche da me scritte saranno opinioni personali e quindi dovranno venire dimostrate da una terza parte di fiducia


WWW
« Reply #4 on: 26-11-2008, 17:11:31 »

Tempo fa avevo postato una soluzione, che però non è esattamente.. perfetta
link al vecchio forum
Logged

There are some OO programming languages. I will create the first -_-' language.

LtWorf
Giuseppo
Apprendista Forumista
**
Offline Offline

Posts: 198



« Reply #5 on: 27-11-2008, 17:17:54 »

per favore potreste postare un codice? 
Logged

I have nothing to declare except my genius.
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #6 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à!!!
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Aigor
Forumista Esperto
****
Offline Offline

Gender: Male
Posts: 1.184


"Il destino non è una catena, ma un volo."[A.B.]


« Reply #7 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 ....
Logged

"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
Giuseppo
Apprendista Forumista
**
Offline Offline

Posts: 198



« Reply #8 on: 27-11-2008, 18:02:00 »

no l'ho provato ma non compila
Logged

I have nothing to declare except my genius.
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #9 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"
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Giuseppo
Apprendista Forumista
**
Offline Offline

Posts: 198



« Reply #10 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
Logged

I have nothing to declare except my genius.
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #11 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).
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Giuseppo
Apprendista Forumista
**
Offline Offline

Posts: 198



« Reply #12 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
Logged

I have nothing to declare except my genius.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #13 on: 29-11-2008, 12:04:34 »

Impariamo a leggere gli errori del compilatore e a comprenderli tramite la documentazione .

L'errore NoSuchMethodError viene rilevato quando viene richiamato un metodo del quale non si trova (più) la definizione (fonte). 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 .
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #14 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).
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Pages: [1]   Go Up
Print
Jump to: