Chaîne caractere

Bonjour,
ecrire un programme c qui fait entrer une chaïne de caractere ch1 et qui teste si c'est .
RAPPEL: un palindrome est un mot qui reste le même qu'on le liste de gauche a droite ou de droite a gauche.
et merci
Configuration: Windows XP
Firefox 3.0.11

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    honnetement, je ne comprends rien a ce que tu demande ?
    C'est quoi ton probleme, l'enoonce est tronque ou alors il consiste a verifier si une chaine de caracteres represente un palindrome ou non ?
    Et dans quel langage de programmation travaille=tu ?

    edit : je pense avoir compris. Tu veux realiser un programme en C (du moins une fonction) qui recoit en parametre une chaine de caractere et te dit si cette chaine de caractere est un palindrom ou non.
    Faut que je ressorte mais vieux livre poussiereux de c mais c'est relativement simple.
    1. je veux cherche la reponce de se exercice
  2. ecrire un programme c qui fait entrer une chaïne de caractere ch1 et qui teste si c'est .
    RAPPEL: un palindrome est un mot qui reste le même qu'on le liste de gauche a droite ou de droite a gauche.
    ce langage on programme c
    et merci
    1. Oui mais ce que je voulais connaître c'est le contexte dans lequel tu écris ton programme, une application console ou pas, le code doit être dans une fonction ou tout simplement dans un main ?

      bref dans tout les cas le code ne devrait pas trop différer de ceci (a toi de l'adapter en fonction de ce qu'il te faut ) :


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

      main(){

      //Tu cree un tableau de caractere de la longueur que tu veux +1 --> une des valeurs du tableau est utilisee (le "\0")
      char chaine1[31];
      int palindrome = 1; //0 = false et 1 = true

      cout << "Entrez une chaine de caracteres";
      cin >> chaine1;
      //ou cin.getline(chaine, 31) mais dans le cas d'un mot ca ne nous interesse pas.

      //on recupere la taille de la chaine de caractere rentree
      int taille = strlen(chaine1);
      char chaine2[31];
      strcpy(chaine2, chaine1); //copie le contenue de chaine1 dans chaine2

      //on initialise nos deux "pointeurs"
      int x = taille-1;
      int y = 0;

      do {
      //on parcours les deux tableaux dans des sens oppose et on verifie leur egalite
      //ps: definition du palindrome
      if(chaine1[x] != chaine2[y]){
      palindrome = 0;
      }
      //on bouge nos "pointeurs"
      x--;
      y++;
      } while(x != y);

      if(palindrome == 0){
      cout << "Il ne s'agit pas d'un palindrome";
      }
      else {
      cout << "Il s'agit d'un palindrome";
      }

      return 0;
      }
      1. Contributeur
        Salut,
        Ton programme, c'est du C++ et non du C ;-))).
    2. Contributeur
      Salut,
      Poste-nous ce que tu as fait qu'on puisse t'aider.
      (Ici, on ne donne pas les solutions toutes faites car contraire à la charte).

      Remarque : Le principe donné par Mastaking est correct. Mais, d'une c'est du C++ et non du C, et tu n'as pas besoin de passer par un tableau supplémentaire.

      Voilà, tu devrais pouvoir t'en sortir ;-))).
      Cdlt
      1. Bonsoir,

        je sais que je n'utilise pas forcement ce qu'il y a de plus basique pour ce code mais ca reste du C.
        Et en effet mon code est loin d'etre optimise, il faut maintenant que tu l'adapte a ce qui te convient mais tu as la logique. (tu peux en effet faire varier x et y avec le meme tableau mais dans un reflexe de structure favorable au refactoring moi je prefere le faire en deux tableaux.....meme si c'est discutable)

        pour un rappel sur le C ce site me semble pas mal :
        http://www-ipst.u-strasbg.fr/pat/program/tpc.htm
        1. Contributeur
          Tu me diras quel compilateur C accepte cout et cin..
          Par contre j'en connais plein de compilateur C++ qui les acceptent.