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

Algorithmes et structures de données Discussion :

Changer un caractère dans une chaîne contenue dans une phrase


Sujet :

Algorithmes et structures de données

  1. #1
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut Changer un caractère dans une chaîne contenue dans une phrase
    Bonjour;
    je voudrais changer un caractère au sein d'une chaîne. ex:
    entrer une chaîne: rougea
    caractère à supprimer: a
    résultat après suppression: rouge
    Une idée?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    tu parcrours ta chaine caractère par caracter et si tu tombes sur a, tu supprime le caractère

  3. #3
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    donc pour i allant de 1 à fin de ligne()
    si tab[i] = 'a'
    ''=tab[i]
    fin si
    fin pour
    ?

  4. #4
    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
    Points : 6 498
    Points
    6 498
    Par défaut
    Attention, il faut décaler tous les caractères suivants de 1 vers la gauche ensuite, (si tu programmes en C ...)
    "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

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    la plupart du temps ,les tableaux commencent à l'indice 0

    Si tab[i] = tonCaractereSupp alors
    tab[i] = vide
    Si pas la fin de la chaine alors
    decalerToutes LesCasesSuivantes vers la gauche
    FinSi

  6. #6
    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
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par helios77
    la plupart du temps ,les tableaux commencent à l'indice 0

    Si tab[i] = tonCaractereSupp alors
    tab[i] = vide
    Si pas la fin de la chaine alors
    decalerToutes LesCasesSuivantes vers la gauche
    FinSi
    Non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Si tab[i] = tonCaractereSupp alors 
               tant que pas la fin de la chaine faire
                       decaler LaCaseSuivante vers la gauche
                       avancer d'une case vers la droite
               fin tant que
    fin si
    "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

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    pardon
    En fait j'incluais dans mon decalerTouteLesCases, la boucle qui parcourait le rsete du tableau
    C'est pour cette raison que j'ai fait ainsi

  8. #8
    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
    Points : 6 498
    Points
    6 498
    Par défaut
    Oui, je m'en doutais bien, mais le P.O. étant débutant, il était préférable d'être clair à ce sujet (j'espère l'avoir été).
    "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

  9. #9
    Membre habitué Avatar de Ksempac
    Inscrit en
    Février 2007
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 165
    Points : 185
    Points
    185
    Par défaut
    Cela me semble pas tres efficace comme algorithme.

    Imagine que ta chaine soit : "alexandre"
    Tu parcours la chaine :
    Premiere lettre = a, tu supprimes la lettre, puis tu parcours toute la chaine pour la decaler.

    Ensuite la premiere (=ex-seconde) lettre n'est pas a, on continue,
    Pareil sur la 2 et 3.

    4eme lettre = a, tu supprimes la lettre, puis tu parcours a nouveau tout le restant de la chaine pour decaler.

    Ensuite tu parcours la fin de la chaine qui ne pose aucun soucis.

    Au final tu as lu alexandre + lexandre + ndre.

    Je propose une autre solution qui ne parcourt qu'une fois toute la chaine.

    decalage = 0
    POUR i de 0 a fin de chaine
    {
    SI tab[i] = a
    ALORS decalage = decalage + 1
    SINON tab[i-decalage] = tab[i]
    }

  10. #10
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Pour un problème comme ca, naturellement ce que je ferai c'est reconstruire une chaine. Ca n'est pas forcement le plus optimal (surtout en terme de mémoire ) mais c'est facile à comprendre ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    chaine = "abcade";
    nouvelleChaine = "";
    i = 0;
    while (chaine[i] != finDeChaine) {
      if (chaine[i] != 'a')
        nouvelleChaine = nouvelleChaine . chaine[i]; // Concaténation
      i++;
    }
    echo "Ma nouvelle chaine est : " . nouvelleChaine;
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/01/2013, 11h38
  2. Réponses: 1
    Dernier message: 07/04/2011, 20h28
  3. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  4. Réponses: 3
    Dernier message: 06/12/2010, 15h59
  5. Réponses: 0
    Dernier message: 07/06/2009, 12h31

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