Programma che verifichi se una parola è palindroma

di mattia06 il
9 risposte
Salve a tutti, ho un problema con un programma che dovrebbe verificare se una parola e la sua inversa sono uguali. Il problema è che anche se scrivo una parola come "Anna", mi dice che non è palindroma. Qual'è il problema?

Vi posto il sorgente:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char a[50],aus[50];
int i,k,n;

do{
printf("\nScrivi una parola: ");
gets(a);
n=strlen(a);
}while((n<0)||(n>50));

i=0;

for(k=n-1;k>=0;k--){
aus[k]=a;
i++;}

if(strcmp(a,aus)==0)
printf("\n%s e\' palindroma.",a);
else
printf("\n%s non e\' palindroma.",a);

return 0;
}


Grazie mille in anticipo!!

9 Risposte

  • Le stringhe sono terminate da un carattere NULL (zero). Quando fai la copia al contrario tu non aggiungi alla fine questo carattere terminatore alla nuova stringa.
  • Quindi come dovrei modificare il codice?
  • Te l'ho detto... Devi impostare a 0 l'ultimo elemento della stringa aus
  • Ok, grazie!!!
  • Si, ora restituisce il risultato sperato!!

    Posto il sorgente modificato:


    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main()
    {
    char a[50],aus[50];
    int i,k,n;

    do{
    printf("\nScrivi una parola: ");
    gets(a);
    n=strlen(a);
    }while((n<0)||(n>50));

    i=n;
    aus=a;

    i=0;
    for(k=n-1;k>=0;k--){
    aus[k]=a;
    i++;
    }


    if(strcmp(a,aus)==0)
    printf("\n%s e\' palindroma.",a);
    else
    printf("\n%s non e\' palindroma.",a);

    return 0;
    }
  • Queste non servono

    i=n;
    aus=a;

    Basta

    aus[n]=0;
  • Si, in effetti è inutile
  • @mattia06: ora che hai scritto un programmino che controlla se una parola non è palindroma, perché non provi a scriverne uno che verifichi se un'intera frase è palindroma senza copiarla e senza usare strcmp? Anzi, magari prima scrivi lo stesso programma che hai fatto senza copiare la parola e senza usare strcmp e poi confronti le due versioni rilevando memoria usata e tempo di esecuzione (istruzioni) con stringhe piuttosto lunghe o meglio facendo due conti con carta e penna.
  • Si posso provarci, sembra interessante!!
Devi accedere o registrarti per scrivere nel forum
9 risposte