Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[C++] Palindroma

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[C++] Palindroma

Messaggioda EntropheaR » lun gen 05, 2004 6:13 pm

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;
}
}
Avatar utente
EntropheaR
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 12742
Iscritto il: gio feb 20, 2003 11:31 pm
Località: Zena

[C++] Palindroma

Messaggioda EntropheaR » lun gen 05, 2004 6:13 pm

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;
}
}
Avatar utente
EntropheaR
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 12742
Iscritto il: gio feb 20, 2003 11:31 pm
Località: Zena

Messaggioda M@ttia » lun gen 05, 2004 6:55 pm

Scusa, ma x sicurezza... [:I] Palindroma sarebbe tipo SOS, SUGUS, XEREX, ecc.?
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Messaggioda EntropheaR » lun gen 05, 2004 6:58 pm

<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...
Avatar utente
EntropheaR
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 12742
Iscritto il: gio feb 20, 2003 11:31 pm
Località: Zena

Messaggioda M@ttia » lun gen 05, 2004 7:23 pm

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


[^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda M@ttia » lun gen 05, 2004 7:26 pm

<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...
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Xerex » lun gen 05, 2004 7:28 pm

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.
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)

Messaggioda M@ttia » lun gen 05, 2004 7:32 pm

Eh si vede che XereX è proprio un palindromo... [weponed]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Xerex » lun gen 05, 2004 7:33 pm

Mattia, tu dici che se è pari la scarti, ma direi che non è corretto.
ANNA , OSSO, ASSA, ATTO sono palindrome anche se di lunghezza pari
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)

Messaggioda M@ttia » lun gen 05, 2004 7:45 pm

<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]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Bocca » lun gen 05, 2004 7:48 pm

[OT] Xerex, ma quanto ne sai????? [^] [/OT]
Avatar utente
Bocca
Silver Member
Silver Member
 
Messaggi: 1637
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Xerex » lun gen 05, 2004 7:58 pm

<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]
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)

Messaggioda M@ttia » lun gen 05, 2004 8:14 pm

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... [^]
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda EntropheaR » lun gen 05, 2004 8:46 pm

Ma a me serve in C [:(][:I]
Avatar utente
EntropheaR
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 12742
Iscritto il: gio feb 20, 2003 11:31 pm
Località: Zena

Messaggioda M@ttia » lun gen 05, 2004 8:48 pm

Scusa, ma non puoi semplicemente provarlo e vedere se funge??? [?]

@XereX: Ora è "perfetto", giusto?
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda EntropheaR » lun gen 05, 2004 8:53 pm

<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.
Avatar utente
EntropheaR
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 12742
Iscritto il: gio feb 20, 2003 11:31 pm
Località: Zena

Messaggioda Xerex » lun gen 05, 2004 9:14 pm

<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
Avatar utente
Xerex
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 5948
Iscritto il: lun ago 05, 2002 9:36 am
Località: Parma(Pr)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising