Pagina 1 di 1

[C++] Palindroma

MessaggioInviato: lun gen 05, 2004 6:13 pm
da EntropheaR
Secondo voi fare una funzione che verifichi se è una parola è o no palindroma può essere fatta così?

Codice: Seleziona tutto
bool palindroma (char*s)
{
c = lunghezza stringa-1;
d = lunghezza stringa-1;
int i=0;
while (s[c]==s[i])
{
i++;
c--;
if (i==d && c==0)
return true;
else return false;
}
}

[C++] Palindroma

MessaggioInviato: lun gen 05, 2004 6:13 pm
da EntropheaR
Secondo voi fare una funzione che verifichi se è una parola è o no palindroma può essere fatta così?

Codice: Seleziona tutto
bool palindroma (char*s)
{
c = lunghezza stringa-1;
d = lunghezza stringa-1;
int i=0;
while (s[c]==s[i])
{
i++;
c--;
if (i==d && c==0)
return true;
else return false;
}
}

MessaggioInviato: lun gen 05, 2004 6:55 pm
da M@ttia
Scusa, ma x sicurezza... [:I] Palindroma sarebbe tipo SOS, SUGUS, XEREX, ecc.?

MessaggioInviato: lun gen 05, 2004 6:58 pm
da EntropheaR
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da M@ttia</i>
<br />Scusa, ma x sicurezza... [:I] Palindroma sarebbe tipo SOS, SUGUS, XEREX, ecc.?
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

Esatto

ANNA, RADAR, ESSE, ADA...

MessaggioInviato: lun gen 05, 2004 7:23 pm
da M@ttia
Beh almeno qualcosa l'ho azzeccato... [:0)]

Scusa ma mi sembrava di aver letto che ti serviva x VB... [:I] comunque oramai l'ho fatto x vb, quindi giâ che ci sono te lo scrivo... (non ti servirà a molto, ma magari ad altri...).


[qui si riferisce ad un evento che scatta alla pressione di un pulsante, e che controlla la parola scritta nella casella di testo text1...] [in alcuni pezzi troverete delle ripetizioni che si potevano abbreviare con l'utilizzo di una variabile, ma l'ho volutamente lasciato così lungo perché almeno non bisogna dichiarare variabili...]

Codice: Seleziona tutto
Private Sub Pulsante_Click()

 If (Len(Text1.Text) Mod 2) = 0 Then GoTo 100   <font color="green">'Se è pari la escludiamo subito!</font id="green">
 For k = 1 To (Len(Text1.Text) - 1) / 2

  If Mid(UCase(Text1.Text), (Len(Text1.Text) - 1) / 2 + 1 + k, 1) <> Mid(UCase(Text1.Text), (Len(Text1.Text) - 1) / 2 + 1 - k, 1) Then GoTo 100

 Next k
 
MsgBox "È Palindroma!!!!!": Exit Sub

100 MsgBox ("Non è palindroma!!!")
End Sub


[^]

MessaggioInviato: lun gen 05, 2004 7:26 pm
da M@ttia
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da EntropheaR</i>
<br />Secondo voi fare una funzione che verifichi se è una parola è o no palindroma può essere fatta così?

Codice: Seleziona tutto
bool palindroma (char*s)
{
c = lunghezza stringa-1;
d = lunghezza stringa-1;
int i=0;
while (s[c]==s[i])
{
i++;
c--;
if (i==d && c==0)
return true;
else return false;
}
}

<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

comunque all'inizio c e d sono la stessa cosa!!! Una delle due deve avere un "+ 1" e non un "-1", anche se di C++ io nn ne capisco...

MessaggioInviato: lun gen 05, 2004 7:28 pm
da Xerex
Con la tua versione fai il doppio dei controlli necessari.
potresti fare il controllo se l'indice che viene decrementato diventa <= dell'indice che viene incrementato.
In più, puoi fare questo controllo direttamente nella condizione del ciclo.

MessaggioInviato: lun gen 05, 2004 7:32 pm
da M@ttia
Eh si vede che XereX è proprio un palindromo... [weponed]

MessaggioInviato: lun gen 05, 2004 7:33 pm
da Xerex
Mattia, tu dici che se è pari la scarti, ma direi che non è corretto.
ANNA , OSSO, ASSA, ATTO sono palindrome anche se di lunghezza pari

MessaggioInviato: lun gen 05, 2004 7:45 pm
da M@ttia
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da Xerex</i>
<br />Mattia, tu dici che se è pari la scarti, ma direi che non è corretto.
ANNA , OSSO, ASSA, ATTO sono palindrome anche se di lunghezza pari
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">
[:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I][:I]

MessaggioInviato: lun gen 05, 2004 7:48 pm
da Bocca
[OT] Xerex, ma quanto ne sai????? [^] [/OT]

MessaggioInviato: lun gen 05, 2004 7:58 pm
da Xerex
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da Bocca</i>
<br />[OT] Xerex, ma quanto ne sai????? [^] [/OT]
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

[^][^]

troppo troppo...mi stupisco ogni volta di me stesso...
[weponed]

MessaggioInviato: lun gen 05, 2004 8:14 pm
da M@ttia
Ok, ammetto che me ne stavo quasi disinteressando, ma ora che c'è xerex la devo rifare... [weponed]

(il codice vero e proprio è quello in grassetto, il resto è per mettrlo dentro un sub e per visualizzare il risultato...)

Codice: Seleziona tutto
Private Sub Pulsante_Click()
Palindroma = False <font color="green">'La riazzero casomai non fosse la prima verifica...</font id="green">

<b>For k = 0 To Len(A) / 2
  If Mid(A, k + 1, 1) <> Mid(A, Len(A) - k, 1) Then Palindroma = False: GoTo 10
 Next k
Palindroma = True</b>

10 MsgBox (Palindroma)
End Sub


Così dovrebbe essere perfetto (l'ho testato...). Ho notato che il Len(A)/2 viene già approssimato per difetto da VB, che è esattamente come mi serve... [^]

MessaggioInviato: lun gen 05, 2004 8:46 pm
da EntropheaR
Ma a me serve in C [:(][:I]

MessaggioInviato: lun gen 05, 2004 8:48 pm
da M@ttia
Scusa, ma non puoi semplicemente provarlo e vedere se funge??? [?]

@XereX: Ora è "perfetto", giusto?

MessaggioInviato: lun gen 05, 2004 8:53 pm
da EntropheaR
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da M@ttia</i>
<br />Scusa, ma non puoi semplicemente provarlo e vedere se funge??? [?]
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

Infatti è quello che farò domani ... però intanto l'ho postato ... magari qualcuno mi diceva subito che era una ca//atissima fatto in questo modo.

MessaggioInviato: lun gen 05, 2004 9:14 pm
da Xerex
<blockquote id="quote"><font size="1" face="Verdana, Arial, Helvetica" id="quote">citazione:<hr height="1" noshade id="quote"><i>Messaggio inserito da EntropheaR</i>
........però intanto l'ho postato ... magari qualcuno mi diceva subito che era una ca//atissima fatto in questo modo.
<hr height="1" noshade id="quote"></blockquote id="quote"></font id="quote">

non la è di sicuro...è il primo metodo che viene in mente...
comunque, il procedimento è giusto, ho qualche dubbio sulla correttezza del passaggio di parametri, comunque dovrebbe andare bene la tua prima versione con quelle due modifiche che ti ho segnato prima