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 :

Structure chainé à partir d'une chaine


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Par défaut Structure chainé à partir d'une chaine
    bonjour,
    je cherche comment faire pour compter le nombre de fois qu'une lettre apparait dans un mot puis de classé sa dans une structure chainé. J'ai commencer le programme mais je n'arrive plus à avancer

    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
    22
    23
    24
    25
    26
    27
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define TAILLE 10
     
    int main()
    {
        char source[TAILLE];
        unsigned long nb_lettre;
        struct fiche
        {
            unsigned char code_ascii;
            unsigned long nb_occurence;
            struct fiche * suiv;
        };
        struct fiche * Nouveau;
        struct fiche * Tete;
        Tete = NULL;
        printf("Saisir une phrase\n");
        scanf("%s", source);
        nb_lettre=strlen(source);
        printf("il y a %ld lettre(s)",nb_lettre);
        Nouveau = (fiche*)malloc(sizeof(struct fiche));
        Nouveau->suiv = Tete;
        Tete = Nouveau;
        return 0;
    }
    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Pourquoi classer les résultats du comptage dans une liste chainée ? Un simple tableau ne pourrait-il pas suffire ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    Citation Envoyé par jeremya Voir le message
    Pourquoi classer les résultats du comptage dans une liste chainée ? Un simple tableau ne pourrait-il pas suffire ?
    Un liste chaine c'est plus propre car il ne sait pas a l'avance combien il y aura de lettres différentes et qu'il peut faire du tri par insertion.

    kaku6696: Je te conseil soit de lire un tutoriel expliquant comment on fait une liste chainée, soit de faire comme le conseil jeremya : faire un tableau de 26 cases (Un tableau de pointeurs sur structures dans lesquelles tu as un char et un int, ensuite tu fait le tri).

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Dia,
    Citation Envoyé par Scoaz Voir le message
    Un liste chaine c'est plus propre car il ne sait pas a l'avance combien il y aura de lettres différentes et qu'il peut faire du tri par insertion.

    kaku6696: Je te conseil soit de lire un tutoriel expliquant comment on fait une liste chainée, soit de faire comme le conseil jeremya : faire un tableau de 26 cases (Un tableau de pointeurs sur structures dans lesquelles tu as un char et un int, ensuite tu fait le tri).
    26 cases ne vont pas suffire si on veut prendre en compte tous les caractères

    Et pourquoi des pointeurs sur une structure avec un char et un int si on adresse le tableau à partir du caractère (ce que je déduis de la proposition 26 cases)? un simple int suffit.


  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Par défaut
    C'est pas faux pour l'int.
    Par contre comme il dit qu'il s'agit d'un mot, 26 cases suffisent si il ignore les chiffres et tout le reste, et qu'il n'est pas sensible à la casse.
    Et puis au final je me dis que le nombre de caractères est très limité donc même un tri a bulle serais suffisant.

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Citation Envoyé par Scoaz Voir le message
    Un liste chaine c'est plus propre car il ne sait pas a l'avance combien il y aura de lettres différentes et qu'il peut faire du tri par insertion.
    S'il s'agit de ne compter que les lettres en ignorant la casse, il n'y aura au maximum que 26 lettres différentes. Certes, on ne connait pas le nombre exacte de lettres effectivement présentes dans la chaîne, mais on sait que ce nombre ne dépassera pas 26.

    La chaîne à lire étant inférieure à 255 caractaires, le nombre de fois qu'apparait chaque caractaire peut être enregistré dans un char. Le tableau de 26 lettres aura donc une taille de 26 octets. Pour remplir cette structure, pour chaque lettre, on compte le nombre de fois qu'elle apparait dans la chaîne, et on enregistre cette donnée dans le tableau.

    Ensuite, le tableau ainsi obtenu peut être facilement trié par un tri à bulles.

    Pour finir, rien n'empêche de transformer le tableau en liste chaînée en enlevant les lettres n'apparaissant pas dans la chaîne (compteur égal à 0).

Discussions similaires

  1. extraction d'une chaine à partir d'une autre
    Par prince_bouja dans le forum Débuter
    Réponses: 7
    Dernier message: 15/06/2010, 15h41
  2. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  3. Extraction d'une sous-chaine à partir d'une chaine principale
    Par gazere dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 13/06/2007, 04h08
  4. 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
  5. Réponses: 2
    Dernier message: 24/04/2006, 14h48

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