découpage d'une chaine de caractère.
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

découpage d'une chaine de caractère.



  1. #1
    invite21b4790f

    découpage d'une chaine de caractère.


    ------

    Bonjour tout le monde

    J'ai besoin de votre aide sur cet algorithme, j'ai des difficultés avec les chaines de caractères.

    Découpage d'une chaine de caractère tokens

    On souhaite concevoir une fonction stringTokenizer() qui permet de découper une chaine de caractères en une suite de tokens pour cela elle s'appuiera sur un ensemble de séparateurs.
    Cette fonction recevra 4 paramètres:
    -une chaine de caractères à découper
    -une chaine de caractère contenant les séparateurs
    -un tableau destiné à recevoir les tokens
    -le nombre max de tokens que peut recevor le tableau

    la fonction renverra le nombre tokens trouvés dans la chaine.




    Question 4.1:
    1. Soit la chaine "il fait*beau ici ; n'est ce pas : oui c'est vrai" et la liste de séparateurs: "* ; :".
    Donnez la liste des tokens

    2. En considérat la meme chaine de caractères et la liste de séparateurs: " " (espace) donnez la liste et le nombre de tokens

    question 4.2 fonction utile

    Ecrire une fonction substr() prenant en paramètre une chaine de caractères chaine et deux entiers pos et len et retournant la chaine composée de tous les caractères de chaine pris à, partir de la position pos et de longuet len. Si la chaine n'est pas assez longue, la fonction renvoie le max de caractères possible. Ainsi l'exécution de la foction substr("abcdefg",2,3) renvoir la chaine "cde"; l'exécution de la fonction substr("abcdefg", 4, 6) renvoie la chaine "efg"; la chaine "cde"; l'execution de la fonction substr("abcdefg", 4 ,6) renvoie la chaine "efg";

    question 4.3 fonction stringTokenizer()
    1. Ecrire la fonction
    2. Proposez d'autres jeux de tests

    ce que j'ai fais:

    4.1
    1. La liste des tokens de cette phrase est : { “il”, “fait”,“beau”, “ici”,“n'est”, “ce”,“pas”, “oui”, “c'est”, “vrai” }

    2. La liste des tokens de cette phrase est : { “il”, “fait”,“beau”, “ici”,“n'est”, “ce”,“pas”, “oui”, “c'est”, “vrai”, "*", ";", ":" }
    le nombre de tokens est de 13

    4.2

    je bloque dans cette phrase
    retournant la chaine composée de tous les caractères de chaine pris à, partir de la position pos et de longuet len.
    comment prendre à partir de la position pos et de longuet len ?

    j'ai fais cela:
    Code:
    string substr(char chaine, int sep, int len)
    {
        
        
    }
    Merci d'avance
    Bonne journée

    -----
    Dernière modification par JPL ; 26/11/2013 à 22h32.

  2. #2
    invitef35ebd48

    Re : découpage d'une chaine de caractère.

    Bonjour,

    T'utilises quoi comme langage ? Souvent le char ne représente qu'un seul caractère...

  3. #3
    invite21b4790f

    Re : découpage d'une chaine de caractère.

    en fait on utilise le C maintenant avec la syntaxe du C++ on compile/exécute sous linux avec gedit.

  4. #4
    invitef35ebd48

    Re : découpage d'une chaine de caractère.

    D'ac, je connais mal le C (mais je me soigne)

    J'imagine qu'il vaut mieux avoir comme paramètre un tableau de char plutôt qu'un seul char.

  5. A voir en vidéo sur Futura
  6. #5
    RiketRok

    Re : découpage d'une chaine de caractère.

    Salut,

    En me basant sur la syntaxe du C, le prototypage de ta fonction substr ressemblerait plus à cela :

    Code:
    char *substr(char *chaine, int pos, int len)
    {
        
        
    }
    En effet, "char chaine" veut dire que tu reçois un seul caractère, dénommé chaine. Or, à mon avis, ta fonction doit recevoir un pointeur sur le début de la chaîne de caractère (donc un char *).
    Maintenant, peut être que vous exploitez la classe String du C++, et là ce serait autre chose.

    Pour substring, il me semble que tu dois avoir déjà vu l'allocation dynamique de mémoire avec malloc(3) ?

    Ton but sera donc, comme le montre si bien l'exemple de l'énoncé, renvoyer une chaîne de caractère fraîchement allouée, qui correspond à ce que tu reçois en paramètre.
    Les exemples sont clairs :
    substr("abcdef", 0, 6)
    renvoie la chaîne : "abcdef"
    substr("abcdef, 0, 2147483647)
    renvoie la chaîne : "abcdef"
    substr("abcdef", 1, 5)
    renvoie la chaîne : "bcdef"
    substr("abcdef", 50, 15)
    renvoie "" ou NULL si il y a gestion d'erreur, Segmentation Fault autrement.
    Mais vu que substr est destinée à stringTokenizer, ce cas ne devrais jamais arriver.

    A partir de là, coder cette fonction ne devrait pas être trop dur.

    Conseils :
    - utilise des "unsigned int" pour pos et len, si tu veux faire plus propre, vu que pos et len seront toujours positifs.
    (rappel : int va de -2147483648 à 2147483647, tandis que l'unsigned va de 0 à 2^32 - 1)
    - vérifie la valeur de retour de malloc, qui peut être égale à NULL en cas d'echec.

  7. #6
    invite1c6b0acc

    Re : découpage d'une chaine de caractère.

    Bonjour,
    Pour la question 4.1.2, tu t'est trompé :
    fait*beau est un seul token.
    Je suppose que ça doit être la même chose du côté du "Oui", mais chez moi, c'est remplacé par un smiley !

    Et pour la question 4.1.1, c'est curieux que l'espace apparaisse deux fois dans ta liste de séparateurs. Tu es sûr ?

  8. #7
    bisou10

    Re : découpage d'une chaine de caractère.

    En fait tu n'as rien fait, rien compris et tu veux qu'on fasse ton exo ?

    Commence par savoir ce qu'est un token d'abord ! Ensuite refais ton exercice !

  9. #8
    JPL
    Responsable des forums

    Re : découpage d'une chaine de caractère.

    Citation Envoyé par Chanur Voir le message
    fait*beau est un seul token.
    Je suppose que ça doit être la même chose du côté du "Oui", mais chez moi, c'est remplacé par un smiley !

    Et pour la question 4.1.1, c'est curieux que l'espace apparaisse deux fois dans ta liste de séparateurs. Tu es sûr ?
    N'aurais-tu pas plutôt des problèmes d'affichage ? Je ne vois pas ce que tu veux dire.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  10. #9
    invite21b4790f

    Re : découpage d'une chaine de caractère.

    Merci pour vos réponses demain je vous envoie mon algo
    en fait je viens de constater un gros problème je n'ai pas révisé les TD !!!

    A demain

  11. #10
    RiketRok

    Re : découpage d'une chaine de caractère.

    Si il y a un domaine qui nécessite de bien comprendre ce que l'on fait, c'est bien l'informatique. C'est un peu comme une langue étrangère, il faut apprendre le vocabulaire et la grammaire, sans quoi ton pinceau ne pourra glisser aisément.

    Mais une fois que tu as compris les principes et la syntaxe, ça devient facile comme bonjour.

  12. #11
    invite1c6b0acc

    Re : découpage d'une chaine de caractère.

    Citation Envoyé par JPL Voir le message
    N'aurais-tu pas plutôt des problèmes d'affichage ? Je ne vois pas ce que tu veux dire.
    C'est tout à fait possible.
    Pour moi, la liste de séparateurs "* ; :" contient : astérisque, espace, point-virgule, espace, deux-points.
    Mais je ne maîtrise pas grand chose de l'affichage ...

  13. #12
    JPL
    Responsable des forums

    Re : découpage d'une chaine de caractère.

    J'ai trouvé et corrigé l'origine du smiley parasite que je n'avais pas vu en première lecture : un ":" non suivi d'espace.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

Discussions similaires

  1. [C] Concaténer chaine de caractère + caractère
    Par invite48ca7510 dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 26/01/2013, 11h43
  2. chaîne de caractère
    Par invite9c4bf030 dans le forum Programmation et langages, Algorithmique
    Réponses: 6
    Dernier message: 02/04/2012, 19h30
  3. chaine de caractère
    Par invite9f95f6e7 dans le forum Programmation et langages, Algorithmique
    Réponses: 27
    Dernier message: 01/01/2012, 17h38
  4. chaîne de caractère
    Par invite9f95f6e7 dans le forum Programmation et langages, Algorithmique
    Réponses: 15
    Dernier message: 01/01/2012, 15h06
  5. Chaine de caractère C++
    Par invitee5fedd72 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 06/03/2008, 20h29