Programmazione C

STL87
ragazzi mi serve una mano...come sempre... :-D

devo fare un esercizio in c e fare un programmino che riconosca le frasi palindrome...
vi posto il listato e provate a dirmi cosa c'è che non va...
il programma gira ma anche quando la frase è palindroma non la riconosce...


#include
#include

main()
{
int i=0; char frase[100];
char *c; int j, k, flag;


printf("\n** Inserire la frase palindroma da analizzare, senza punteggiatura, apostrofi e spazi bianchi **\n");
scanf("%[^\n]s", frase);

c=frase;

for (i=0 ; *c != '\0' ; ++c) ++i;

flag=0;
for(j==0, k==i-1; (j=i-1)&&(k=0)&&(flag=0); j++, k--){
if(frase[j]=frase[k])
flag=0;
else
flag=1; }

if(flag=1)
printf("\n** la frase non e' palindroma **");
if(flag=0)
printf("\n** la frase e' palindroma **");

fflush(stdin);
getchar();
getchar();
}

Risposte
lorven
L'errore più evidente è nell'uso di "=" e "==". C'è anche qualche inefficienza nell'algoritmo. Questa versione va un po' meglio ;-)
#include<stdio.h>
#include<string.h>
main()
{
int i; char frase[100];
char *c; int j, flag;
printf("\n** Inserire la frase palindroma da analizzare, senza punteggiatura, apostrofi e spazi bianchi **\n");
scanf("%[^\n]s", frase);
c=frase;
for (i=0 ; *c != '\0' ; ++c) ++i;
flag=0;
for(j=0; (j<i/2)&&(flag==0); j++)
    if(frase[j]!=frase[i-j-1])
       flag=1;
if(flag==1)
   printf("\n** la frase non e' palindroma **");
   else
        printf("\n** la frase e' palindroma **");
fflush(stdin);
getchar();
}

STL87
"lorven":
L'errore più evidente è nell'uso di "=" e "==". C'è anche qualche inefficienza nell'algoritmo. Questa versione va un po' meglio ;-)
#include<stdio.h>
#include<string.h>
main()
{
int i; char frase[100];
char *c; int j, flag;
printf("\n** Inserire la frase palindroma da analizzare, senza punteggiatura, apostrofi e spazi bianchi **\n");
scanf("%[^\n]s", frase);
c=frase;
for (i=0 ; *c != '\0' ; ++c) ++i;
flag=0;
for(j=0; (j<i/2)&&(flag==0); j++)
    if(frase[j]!=frase[i-j-1])
       flag=1;
if(flag==1)
   printf("\n** la frase non e' palindroma **");
   else
        printf("\n** la frase e' palindroma **");
fflush(stdin);
getchar();
}



thank you...
grazie mille!!! :-D

simo_83
Si può anche fare ricorsivamente :D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.