Palindrome ou pas ??

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 022 fois - Téléchargée 33 fois

Contenu du snippet

En cherchant dernierement un code source sur ce site pour tester une chaine de caractere et voir si il s'agissait d'un palindrome ou pas... j'ai été surpris de ne pas en trouver qui fonctionnaient bien.

Je pense que celui la fonctionne corectement et sera modifié pour plus de possiblités encore.

ps: c'est un test simple avec des boucles for, while... pas de grosse fonctions bien compliquées :)

pour les débutants comme moi quoi :)

Source / Exemple :


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

int main()
{

char phrase[100]="",test[100]="",test2[100]="";
int i=0,nblettre=0,j=0;

cout<<"========Entrer la phrase a verifier========"<<endl;
gets(phrase);

nblettre=strlen(phrase); //calcule du nombre de caractere de la phrase !

for(i=0;i<=nblettre;i++){
if (phrase[i]==' '){
j=j++;                  // Initialisation de J ! sans cette etape, lors de l'affichage des caracteres vide apparaitraient :)
}                       //
}                       //
                        //
                        //
j=nblettre-j-1;         // pour le /0

//cout<<j<<endl;

for (i=0;i<=nblettre;i+0,j--){

                if (phrase[i]!= ' '){
                test[j]=phrase[i];
                i=i++;
                }                              // Ce test permet de ne pas garder les espaces du texte en ne les envoyant
                                               // pas vers le tableau test[j]
                                               //permet en plus de mettre le mot à l'envers avec le j-- !

                else{
                test[j]=phrase[i+1];
                i=i+2;
                }

}
                               // réinitialisation des valeurs !
j=0;                          //
i=0;

for (i=0;i<=nblettre;i+0,j++){

                if (phrase[i]!= ' '){
                test2[j]=phrase[i];                              //remet la phrase a l'endroit sans 'espace' dans le tableau test2 !
                i=i++;
                }
                else{
                test2[j]=phrase[i+1];
                i=i+2;
                }

}

cout<<"\n========================================================="<<endl;
cout<<"\nvoici la phrase entree a l'envers (sans espace): \n";
for (i=0;i<=nblettre;i++){
cout<<test[i];
}
cout<<"\n";

j=0;
cout<<"\n\nvoici la phrase entree a l'endroit (sans espace): \n";

for (j=0;j<=nblettre;j++){
cout<<test2[j];
}
cout<<"\n";
cout<<"========================================================="<<endl;

i=0;
j=0;

cout<<"\n";
if (test[0]!=test2[0]){
cout<<"\nVotre phrase:"<<phrase<<" n'est pas un palindrome.\n"<<endl;           //on compare le premier cacactere, si le premier est
system("PAUSE");                                                              //different, cela ne sert a rien de rentrer dans uns boucle
      return 0;
}

while (test[i] = test2[i]){

for (i=0;i=nblettre;i++){

cout<<"\nVotre phrase:"<<phrase<<" est un palindrome.\n"<<endl;                //si les premiers sont bons, ont test le reste !
system("PAUSE");
      return 0;
}
}

      system("PAUSE");
      return 0;
}

// **************************************************************
//******************** By Dambi *********************************
//*********************dambi@wanadoo.fr**************************
//***************************************************************

Conclusion :


Un ti coucou à notre ti prof de l'iloi...

ps: je ne suis pas un tueur :'(

:D
mise a jour prochainement pour plus de convivialité :)

couleur etc ;)

A voir également

Ajouter un commentaire Commentaires
Messages postés
18
Date d'inscription
dimanche 19 septembre 2004
Statut
Membre
Dernière intervention
19 mars 2009

Sinon juste pour info le plus long palindrome de la langue française (et qui veux dire quelque chose ;p) est : Tu l'as trop écrasé César ce port salut. Mais je ne suis pas sur que cette source le détect comme un palindrome (enfin j'ai pas testé).
Messages postés
5
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
17 janvier 2005

oui vous avez raison mais ce que joublie c'est :

n=strlen(test);
avant le for
:)
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

if(test[i]==' ')while(test[i]==' ')++i;
if(test[n]==' ')while(test[n]==' ')--n;

peut s'écrire:

while(test[i++]==' ');
while(test[n--]==' ');
Messages postés
5
Date d'inscription
dimanche 7 novembre 2004
Statut
Membre
Dernière intervention
17 janvier 2005

int pal(char test[100])
{

int i,n;
for(i=0;i<n;i++,n--)
{
if(test[i]==' ')while(test[i]==' ')++i;
if(test[n]==' ')while(test[n]==' ')--n;
if(test[i]!=test[n])return 0;
}
return 1;
}
voila une autre avec un test sur les blancs
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

c'est dommage parce que ça demande de faire deus boucles et de copier la chaîne sans blanc. il vaut mieux zapper les blancs avec une conditionnelle dans la boucle que propose lopz, m'enfin on a sûrement déjà dit ça.
Afficher les 43 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.