praticamente facciamo un esempio:
la parola è "aboba" x esempio.
avrai che la lunghezza L è 5
e con un ciclo x scandirla avrai
for (i=0; i<(int)L/2 i++)
dirai che significa (int)L/2 ???
significa che faccio il controllo silla PRIMA META' della parola, che confronto con la SECONDA META'. Quindi da 0 a (int)L/2 ci sarà la prima metà.
In una parola di 5 lettere, andrà da 0 a 2(escluso) perchè
(int)5/2 = (int)2.5 = 2
In una parola di 8 lettere, andrà da 0 a 4(escluso) perchè
(int)8/2 = (int)4 = 4
Quindi avendo la prima metà confronti ogni carattere I con il carattere L-I-1 (meno uno perchè le stringhe in c++ vanno da 0 a len-1)
quindi confronterai:
0 con 4
1 con 3
fine
In una parola di 8 lettere confronterai:
0 con 7
1 con 6
2 con 5
3 con 4
quindi poni una variabile flag che all'inizio vale true (è palindroma) e se nel ciclo non viene verificata una uguaglianza, diventa false.
codice:int L = strlen(parola); bool FLAG=true; for (i=0; i<(int)L/2; i++) if (parola[i] != parola[L-i-1) FLAG = false; if FLAG //palindroma else //non palindroma
Spero di essermi spiegato....
![]()
![]()
P.S ho modificato un pò il codice che tu ho dato che così è meglio...

Rispondi quotando