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 :

fonction qui lit un des mots d'une matrice


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut fonction qui lit un des mots d'une matrice
    bonsoir a tous je fais appelle a vous car je rencontre des difficultés sur ma fonction qui est "censés" compter le nombre de lettre d'un mot parmi une liste (situées dans une matrice).

    J'ai tenté de creer une fonction qui me permettra de compter ces lettres mais dès que je compile mon programme plante et je n'arrive pas a comprendre pourquoi. Du moins, je sais que c'est a cause de ma fonction que mon programme plante mais je n'arrive pas a comprendre pourquoi celle -ci fait planter. c'est pour cela que je fais appelle a vous.

    voici le code en question :

    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
    28
    29
    30
    31
     int compterNombreDeLettre (char ListeMots[5][10], int MotAtrouver)
        {
            int x = MotAtrouver, y = 0;
     
            while (ListeMots[x][y] != '0')
            {
                y++;
            }
     
            return y;
        }
     
        srand(time(NULL));
        int PositionMot = rand()%5;
        int NombreLettres = 0;
     
     
        char MotAtrouver[5][10];
     
     
             MotAtrouver[1][7] = "chiens";
             MotAtrouver[2][6] = "chats";
             MotAtrouver[3][7] = "avions";
             MotAtrouver[4][9] = "voitures";
             MotAtrouver[5][8] = "oiseaux";
     
     
     
     
        NombreLettres = compterNombreDeLettre (MotAtrouver[5][10], PositionMot);
        printf("%d", NombreLettres);

    PS : je vous remercie d'avance pour l'aide que vous m'apporterez

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Citation Envoyé par momo-ben2A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             MotAtrouver[1][7] = "chiens";
             MotAtrouver[2][6] = "chats";
             MotAtrouver[3][7] = "avions";
             MotAtrouver[4][9] = "voitures";
             MotAtrouver[5][8] = "oiseaux";
    Alors déjà ici, ce n'est pas bon du tout.
    Soit tu initialise ton tableau lors de sa déclaration.
    Soit tu utilise les fonctions strcpy ou mieux strncpy pour copier les chaine dans le tableau.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut
    ok je vais donc initialiser le tableau dès sa declaration, mais par contre peux tu m'aider en ce qui concerne la fonction car je ne sais pas comment m'y prendre

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Citation Envoyé par momo-ben2A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (ListeMots[x][y] != '0')
    dans le while tu testes le caractère 0 alors que je supose que tu veux tester le caractère nul, ce n'est pas du tout la même chose.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    dans le while tu testes le caractère 0 alors que je supose que tu veux tester le caractère nul, ce n'est pas du tout la même chose.
    Bien vu. Ne pas confondre '0' (valeur ascii 48) et '\0' (valeur ascii 0)

    Citation Envoyé par momo-ben2A Voir le message
    bonsoir a tous je fais appelle a vous car je rencontre des difficultés sur ma fonction qui est "censés" compter le nombre de lettre d'un mot parmi une liste (situées dans une matrice).

    J'ai tenté de creer une fonction qui me permettra de compter ces lettres mais dès que je compile mon programme plante et je n'arrive pas a comprendre pourquoi. Du moins, je sais que c'est a cause de ma fonction que mon programme plante mais je n'arrive pas a comprendre pourquoi celle -ci fait planter. c'est pour cela que je fais appelle a vous.

    voici le code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     int compterNombreDeLettre (char ListeMots[5][10], int MotAtrouver)
        {
            int x = MotAtrouver, y = 0;
     
            while (ListeMots[x][y] != '0')
            {
                y++;
            }
     
            return y;
        }
    Je ne comprends pas la logique de cette fonction.
    Elle reçoit en paramètre l'ensemble de tous les mots et la position du mot à compter (accessoirement ton nom de variable est à revoir)

    Pourquoi ne pas la faire recevoir juste le mot à compter ???

    PS: une initialisation (y=0); un test (ListeMots[x][y] != '\0'); un incrément (y++). Tu ne reconnais pas là tous les éléments d'un "for" ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 60
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             MotAtrouver[1][7] = "chiens";
             MotAtrouver[2][6] = "chats";
             MotAtrouver[3][7] = "avions";
             MotAtrouver[4][9] = "voitures";
             MotAtrouver[5][8] = "oiseaux";
    Alors déjà ici, ce n'est pas bon du tout.
    Soit tu initialise ton tableau lors de sa déclaration.
    Soit tu utilise les fonctions strcpy ou mieux strncpy pour copier les chaine dans le tableau.
    Le problème n'est pas vraiment la façon dont il fait la déclaration. L'erreur la plus flagrante est sur le type des données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MotAtrouver[1][7] = "chiens";
    ...
    MotAtrouver est censé être un 'char **'... Donc 'MotAtrouver[1][7]' doit être un caractère, et non une chaîne de caractères...

  7. #7
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Citation Envoyé par DeathMixer
    MotAtrouver est censé être un 'char **'... Donc 'MotAtrouver[1][7]' doit être un caractère, et non une chaîne de caractères...
    Tu ne veux quand même pas lui faire remplir le tableau caractère par caractère, malgré que cela soit possible.
    Pour moi la façon dont il rempli le tableau c'est n'importe quoi !
    Il faut qu'il regarde son cours sur les tableaux et les chaine de caractères avant d'aller plus loin.

    PS : MotAtrouver est un char[][10] pas un char**
    tu va l'embrouiller.

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 526
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 526
    Par défaut
    Salut Momo-Ben je te déconseille de déclarer des tableaux avec des tailles fixes c'est ingérable.
    Il vaut mieux utiliser strcpy comme le dit lucien63 ou bien faire un mallloc à chaque fois.
    Pour des performance de recherche accrues il vaut mieux envisager de faire des listes chainées

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 814
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Salut Momo-Ben je te déconseille de déclarer des tableaux avec des tailles fixes c'est ingérable.
    Il vaut mieux utiliser strcpy comme le dit lucien63 ou bien faire un mallloc à chaque fois.
    Pour des performance de recherche accrues il vaut mieux envisager de faire des listes chainées
    Non mais attend !!! Tu vois bien que c'est un exo de débutant qu'on lui donne à faire. Ne va pas lui parler de malloc et de listes chainées ; surtout qu'une liste chainée n'offre aucune performance de recherche mais juste des performances au niveau de l'insertion d'un nouvel élément...

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char *MotAtrouver[]={
        "chiens",
        "chats",
        "voitures",
        "avions",
        "oiseaux",
    };
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut
    merci a tous, je vais mettre vos conseils en pratique

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2010
    Messages : 126
    Par défaut
    re bonjour a tous, j'ai resolu mon probleme en mettant les mots dans un fichier.txt, l'implementation des fonctions qui travaillent sur le tableau de caractere devient beaucoup plus simple

    PS : merci a tous encore une fois pour vos conseils

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Je vais juste ajouter un mot : une matrice est quelque-chose de bien particulier.
    Quant on lit le titre, on détecte tout de suite le contexte. Vous remarquerez d'ailleurs que le terme "matrice" n'a été employé par aucun de ceux qui vous ont répondu. Il s'agit de tableau. Naturellement tout le monde avait compris qu'il s'agissait de tableau, mais surtout tout le monde avait compris que vous ne saviez pas ce qu'était une matrice.

Discussions similaires

  1. [XL-2003] Suppression de lignes qui contiennent des mots d'une liste
    Par fortbelin dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/09/2011, 15h47
  2. Fonction qui renvoie les premières lettres d'une suite de mots
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 16
    Dernier message: 30/06/2010, 13h58
  3. Réponses: 12
    Dernier message: 03/12/2009, 17h11
  4. Dégrossir ma fonction qui lit des floats.
    Par disturbedID dans le forum C
    Réponses: 6
    Dernier message: 16/04/2007, 02h08
  5. Réponses: 13
    Dernier message: 05/03/2007, 09h29

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