Programmazione C
ragazzi mi serve una mano...come sempre...
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();
}

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
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(); }
"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!!!

Si può anche fare ricorsivamente
