Palindrome

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 778 fois - Téléchargée 31 fois

Contenu du snippet

Hello all !

tout d'abord, pour ceux qui ne savent pas ce qu'est un palindrome :
Un palindrome, c'est un texte dont la succession des lettres est la même quand on le parcourt
de gauche à droite ou de droite à gauche.
Bref, c'est une phrase qui peut se lire dans les deux sens.

Un lien vers le grand palindrome de Georges Perec : (il fait exactement 1273 mots)
"http://homepage.urbanet.ch/cruci.com/lexique/palindrome.htm"

Et encore quelques exemples de palindrome :
- Engage le jeu que je le gagne
- L'ami naturel ? Le rut animal
- Eh ! Ca va la vache ?
- Car tel Ali, il a le trac
- Oh, cela te perd répéta l'écho
Et je fini la liste avec le meilleur des palindromes : c'est bien sur le classique "PHP" :-)

Donc voila, ce petit script permet tout simplement de vérifier si ce que vous rentrez est un palindrome ou non ?

Source / Exemple :


<?php
echo '<form action="'.$_SERVER['PHP_SELF'].'" method=get">
Entrer votre phrase ici : <input type="text" name="phrase" size="50" />
</form>';

if(isset($_GET['phrase']))
{
    /* on verifie l'état des magic_quotes */
    if(get_magic_quotes_runtime()==1)
    {
        $phrase = stripslashes($_GET['phrase']);
    }
    else
    {
        $phrase = $_GET['phrase'];
    }
    /* on remplace les caracteres avec accent */
    $phrase= strtr($phrase,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"
                            ,"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
    /* on passe tout en minuscule et on supprime les caracteres speciaux */
    $special = array(" ", "!", ":", "?", ".", "/", "$", "&", "%", "'", ",");
    $phrase = strtolower(str_replace($special,"",$phrase));
    
	/* on inverse le sens des lettres de la phrase */
    $inverse = strrev($phrase);
    
    echo '<p style="color:#ff0000;font-size:18px;"><strong>"'.$_GET['phrase'].'"</strong> ';
    if($phrase==$inverse) echo 'est un palindrome'; else echo 'n\'est pas un palindrome';
    echo '</p>';
}
?>

Conclusion :


pour finir, je vais quand même remercier "malalam" ;)
car c'est lui (enfin plutot son pseudo) qui m'a donné l'idée de faire ce petit bout de code !

voila, n'hésitez pas à laisser vos commentaires !

A voir également

Ajouter un commentaire

Commentaires

madiop03
Messages postés
1
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
3 janvier 2010

l'eternel consommateur dit MERCI!!!!!!!!!!!!!!!
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
20
Lol :-)
Non mais c'est sympa aussi de l'avoir la, le php et le C sont de proches parents :-)
issoux
Messages postés
58
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
6 mai 2008

sorry mais est-ce qu'un admin pourrait replacer mon code au bon endroit!! sorry pour l'erreur

merci.
issoux
Messages postés
58
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
6 mai 2008

bonjour, voila le code du palindrome en "c "sans la fonction strrev!! ça a l'air de marcher...


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

int nettoyage (char ch[255])

{ char ch1[255];
  int detect=0;int i,j;

  clrscr();


for (i=0;i<strlen(ch1);i++)
    { strcpy(ch1,NULL);}

printf("%s\n\n",ch);

printf(" pour nettoyer tapez une touche \n");

getch();

for  (i=0;i<strlen(ch);i++)


   { ch[i]=toupper(ch[i]);}   /* MAJ */

 j=0;

 for (i=0;i<=strlen(ch);i++)
   
                          { if (isalpha(ch[i]))
       {ch1[j]=ch[i];j++; }

     else { ch1[j]=ch[i+1]; /* on met rarement deux espaces dans une chaine donc j'ai proc&#8218;d&#8218; ainsi */
    
                                    clrscr();detect++;
    
                                    printf(" un non-caractere d&#8218;tect&#8218;  (%d)\n",detect);
    
                                    getch();
    
                                    clrscr();
  }
    }

   ch1[i]=NULL;

clrscr();

printf("chaine nettoyee =>  %s",ch1);

getch();

return 0;
}






int initchaine (char chaine[255])

{ int lg,i;


lg=strlen(chaine);

for (i=0;i<lg;i++)
  { chaine[i]=toupper(chaine[i]); }
  chaine[i]='\0';


return 0;
}




int palindrome (char chaine[255])

{  int i,j,lg=0;
   int pal=0;

   clrscr();

nettoyage(chaine); 

 lg=strlen(chaine);

   j=lg-1;


for (i=0;i<lg;i++)
    { if (chaine[j]==chaine[i])
  {pal=1; j--;}
      else                        pal=0;break;

    }



initchaine(chaine);

   if (pal==1)
    {   clrscr();printf(" cette chaine est palindrome => %s",chaine);

getch();
    }


   else if (pal==0)  {     clrscr();printf(" cette chaine n\'est pas un palindrome =>  %s ",chaine);

      }   getch();



return 0;

}

int main ()

{
   char ch[25];
   clrscr();

printf(" entrez phrase  => "); fflush(stdin);scanf("%s",&ch);
palindrome(ch);

return 0;

}
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
merci malalam, je ne connaissais pas cette fonction
ça enleve quelque lignes de code inutiles donc c'est mieux ;)

donc voila, j'ai mis à jour le code en rajoutant la fonction strrev() qui inverse l'ordre des caractéres dans une chaîne

@+

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.