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 :

Extraction d'une sous-chaine à partir d'une chaine principale


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut [resolu] Extraction d'une sous-chaine à partir d'une chaine principale
    Salut,

    Je suis en train d'analyser un projet en algorithme avant de passer au langage C. Une chose m'empêche d'avancer. En effet, je dois creer une fonction qui aura pour role d'extraire une sous-chaine (ou encore chaine secondaire) à partir d'une chaine principale. Ces deux chaines contiendront des caractères alphanumériques.
    La chaine principale aura une taille m (nombre de caractères que cette chaine peut prendre) tandis que la sous-chaine une taille n (supérieure à zéro) telle que n soit inférieure ou égale à m (n <= m).

    Pour resumer, ma question est la suivante: comment faut-il créer cette fonction en algorithme qui doit retourner la sous-chaine?

    D'avance, merci!

  2. #2
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Le problème avec les chaînes C c'est le terminateur (code 0). De fait, pour identifier une sous-chaîne dans une chaîne, il suffit de connaître 2 positions: l'indice du caractère de début, et l'indice du caractère de fin. Mais les fonctions C ne retourne pas de tableaux, donc ma solution:
    repérer l'indice de début m, et l'indice de fin n
    faire un malloc pour n-m+2 caractères qui retourne donc un char *
    placer 0 en dernière position dans cette chaîne.
    Recopier les éléments d'indice m à n de la chaîne initiale.
    Retourner la chaîne ainsi construite comme un char *.
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    merci Zavonen pour ton aide. ça me servirai beaucoup quand je vais passer au C.
    J'ai trouvé une solution (en algorithme) en fouillant dans les bouquins.
    Pour ceux qui seront intéressés, le resultat de mes recherches est le suivant:
    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
    20
    21
     
    Fonction Extraction (ch: chaine de caracteres (m), m:entier):chaine de caracteres (m)
     
    Variables
     
       tmp:chaine de caracteres;
          i,n:entier;
     
    Debut
     
       n ← longueur (ch);
       si m>0 et m <=n alors
        pour i de 1 à m faire
         tmp(i)←ch(i);
        finpour
      sinon
       tmp←'';
     fsi
     retourner (tmp);
     
    Fin

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/09/2014, 14h00
  2. Réponses: 4
    Dernier message: 10/10/2010, 11h46
  3. Réponses: 2
    Dernier message: 05/03/2010, 14h15
  4. Extraction d'une sous matrice à partir d'une matrice
    Par Christinita dans le forum MATLAB
    Réponses: 16
    Dernier message: 17/01/2009, 10h42
  5. Extraction d'une chaine à partir d'une photo
    Par Julaie95 dans le forum Traitement d'images
    Réponses: 31
    Dernier message: 23/05/2006, 15h44

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