IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

inversé une chaine de caracteres


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut inversé une chaine de caracteres
    bonjour

    je suis débutant en C et pour commencer à apprendre j'essai de faire des exercices proposé par un site

    je bloque un peu sur l'un d'entre eux :

    comment inversé une chaine de caractere ?

    par exemple on demande une saisie d'une chaine (on va prendre bonjour) et cela dois nous afficher ruojnob


    si vous pouviez m'aider

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    As tu déjà un début de code ?

    Sinon, as tu un algorithme ? Si ce n'est pas le cas, tu devrais déjà le chercher avec de le coder en C.

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Citation Envoyé par Nom
    bonjour

    je suis débutant en C et pour commencer à apprendre j'essai de faire des exercices proposé par un site

    je bloque un peu sur l'un d'entre eux :

    comment inversé une chaine de caractere ?

    par exemple on demande une saisie d'une chaine (on va prendre bonjour) et cela dois nous afficher ruojnob


    si vous pouviez m'aider
    Est ce que tu pourrais me donner l'url du site où tu as trouvé cet exercice ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    oui millie


    je pensai utiliser la fonction strlen pour connaitre deja la longueur de la chaine

    ensuite prendre le dernier caractere, le mettre à la place du premier et ainsi de suite mais c'est la ou je vois pas trop comment faire ...


    une boucle for sans doute .. je met mon code mais je rappel que je débute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <stdio.h>
    #include <string.h>
     
    int main() 
    {
    int j;
    char  message[]="coucou"; 
     
    j=strlen(message);
    for (int i = 0;i<strlen(message); i++) 
    {   
        message[i]=message[j];
        j--;
    }
     
    printf("%s\n",message);
    return 0; 
    }

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Remarque que ton exercise de demande pas d'inverser une chaine de caractere (i.e. prendre une copie de la chaine puis inverser les caracteres) mais de l'afficher a l'envers (simple boucle d'affichage depuis la fin de la chaine jusqu'au debut).

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    strrev (string.h)me semble te renvoi la chaine inversée,a moins de vouloir la recoder sinon j'ai rien dis

  7. #7
    Membre éclairé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Par défaut
    Citation Envoyé par hegros
    strrev (string.h)me semble te renvoi la chaine inversée,a moins de vouloir la recoder sinon j'ai rien dis
    Ben je suppose que l'énoncé de l'exo c'était pas "trouvez la fonction qui vous permet d'inverser une chaine", pke niveau apprentissage des bases du C ça laisse a désirer.

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Je te signale que le sujet a déjà été traité plusieurs fois :

    http://www.developpez.net/forums/sho...light=inverser

    (avec le mot clef : inverse)

  9. #9
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    je pensai utiliser la fonction strlen pour connaitre deja la longueur de la chaine ensuite prendre le dernier caractere, le mettre à la place du premier et ainsi de suite mais c'est la ou je vois pas trop comment faire ...
    Mais, ceci ne met pas le premier caractère à la place du dernier.
    Il faut prendre le premier et le dernier et les échanger et ainsi de suite.
    Attention à ne pas les échanger deux fois sinon on se retrouve au point de départ : donc la boucle doit s'arrêter lorsque que celui qui joue le rôle du premier "dépasse la position" de celui qui joue le rôle du dernier

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut
    je ne comprends pas, tu as pratiquement bon non dans ton code ? il faut peut être utiliser une chaîne tampon pour ne pas se compliquer trop la vie ! donc tu fais la même chose, mais en recopiant de message à (par ex) message_inv ?

    tu tu tiens vraiment à ce que le résultat soit dans message, tu recopies à la fin le contenu de message_inv dans message.

    je changerais peut être la condition d'arrêt de ta boucle for en (je ne sais pas si strlen est appelé à chaque itération de la boucle, mais au cas où, autant mettre cette condition équivalente et certainement pas plus lente).

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Comm d'hab dans ce genre de problème as-tu essayé à la main ce que tu essayes de programmer ? On passe cinq minutes à réfléchir le crayon à papier à la main, ensuite on écrit un pseudo code, on le vérifie avec quelques tests et enfin on passe au code C.
    Tant que les débutants ne feront pas cet effort indispensable, il y aura des questions de ce genre, ici c'est le forum C, on ne devrait pas répondre à des questions sur les algos.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Trap D
    Comm d'hab dans ce genre de problème as-tu essayé à la main ce que tu essayes de programmer ? On passe cinq minutes à réfléchir le crayon à papier à la main, ensuite on écrit un pseudo code, on le vérifie avec quelques tests et enfin on passe au code C.
    Tant que les débutants ne feront pas cet effort indispensable, il y aura des questions de ce genre, ici c'est le forum C, on ne devrait pas répondre à des questions sur les algos.
    +1

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut
    je ne suis pas d'accord.

    c'est pas comme s'il n'avait pas cherché du tout, il était tout près de trouver j'ai l'impression. Personnellement j'ai fait 1000 fois la même erreur (oouh !).

    Peut être que ça embête certains de réfléchir sur des problèmes plus "simples" ou que ça les saoule de voir X fois la même question.

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    S'il avait testé son code à la main, il aurait vu qu'il état faux.
    Je suis passé par là aussi, mais à une époque où il n'y avait pas Internet, et il fallait bien que je m'en sorte et crois moi au bout de quelques temps tu sais que c'est la meilleure solution, qui évite une bonne perte de temps. Réfléchir est difficile, mais ça n'a jamais fait de mal à personne.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Trap D
    Réfléchir est difficile, mais ça n'a jamais fait de mal à personne.
    Euh, une fois je me suis fait une entorse à un neurone...

  16. #16
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Euh, une fois je me suis fait une entorse à un neurone...

    C'est pas grave, du moment que les connexions restent en vie

    Sinon +1 pour Trap D il y a 10 fois plus de bonnes raisons d'écrire un Pseudo-Code avant de se lancer dans la programmation que de ne pas le faire.Pour le moment c'est du "luxe" il faut renverser la chaine donc autant prendre les bonnes habitudes dés le début ca servira par la suite tout le temps sinon dans 10 ans tu te retrouves a faire marche arriére...

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Réponses: 5
    Dernier message: 21/07/2004, 19h34
  3. Extraire un nom d'une chaine de caractere
    Par iamspacy dans le forum Linux
    Réponses: 4
    Dernier message: 03/05/2004, 21h34
  4. Réponses: 2
    Dernier message: 30/03/2004, 11h31
  5. Controler une chaine de caracteres ou d'entiers?
    Par Le druide dans le forum C
    Réponses: 6
    Dernier message: 25/09/2003, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo