Domanda:
programma c++ per palindromo?
Francesca G
2009-08-30 02:36:37 UTC
devo scrivere un programma in c++ che mi analizzi se una stringa è o meno palindroma. ma sono bloccata.. questa è una bozza, dove sbaglio? grazie per l'aiuto!

#include
#include
#include

using namespace std;

int Palindromo (char array[],int arraysize) {
for (int i=0;i for (int j=arraysize;j=0;j++)
if (array[i]==array[j])
cout<<"palindromo"< else
cout<<"no palindromo"<}
return 0;
}
int main()
{
char parola[10];
int size=10;
cout<<"inserisci una parola"< cin>>parola;

int a= Palindromo(parola,size);
cout<



system("PAUSE");
return 0;
}
Quattro risposte:
anonymous
2009-08-30 03:16:25 UTC
L'errore sta nei for.

Devi utilizzare un for (o due, volendo) con due indici, uno che cominci da 0 e proceda in avanti, l'altro che cominci dalla posizione dell'ultimo carattere della stringa e proceda all'indietro.

Il ciclo deve fermarsi quando i due contatori sono uguali o quando il primo supera il secondo, e ad ogni iterazione bisogna verificare che il carattere individuato dal primo contatore sia uguale a quello individuato dal secondo.

Ecco un esempio:



http://pastebin.com/m1965281



Nota a margine: non c'è bisogno di passare alla funzione anche la dimensione della stringa, se questa è ben formata, ossia se ha terminatore nullo, basta usare la funzione strlen() compresa nella libreria cstring.
Tizio 008
2009-08-30 12:15:07 UTC
intanto poiché usi il C++, cerca di rimanere nel C++ ed evita la libreria C standard, a meno che non ne possa fare a meno.

poi, puoi usare l'oggetto string, che ha i suoi vantaggi.



per poter verificare che una parola frase dato ecc. sia palindromo esistono diversi approcci; puoi trovare buon codice, breve e C++oso, qui

http://rosettacode.org/wiki/Palindrome#C.2B.2B



o altrimenti vedi il codice C.
supermiter
2009-08-30 10:15:15 UTC
Ciao,

io conosco un po' il C, non il C++ ma mi sembra che sbagli a mettere i cicli for nidificati. Il ciclo for di i non deve contenere il ciclo for del j.

Eppoi riscriverei il tutto tenendo conto che basta arrivare fino ad arraysize/2

Infatti, ad esempio, per "ottetto", basta che "ott" sia uguale a "tto" alla rovescia. Inoltre basta controllare che array[i]==array[arraysize-1-i].



Io invece in C l'avevo fatta ricorsiva, con l'algebra dei puntatori (da "ottetto" passavo a "ttett", etc).

Ciao
FORZA CATANIA
2009-08-30 09:46:23 UTC
Cosa?? Non ho capito niente!


Questo contenuto è stato originariamente pubblicato su Y! Answers, un sito di domande e risposte chiuso nel 2021.
Loading...