[Exercice]Recherche dans un tableau de Noms
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

[Exercice]Recherche dans un tableau de Noms



  1. #1
    invite4f00587c

    Post [Exercice]Recherche dans un tableau de Noms


    ------

    Bonsoir, je suis étudiant en 1ère Technologie de l'informatique (Belgique, Namur)

    Je suis en plein Blocus pendant ces vacances afin de bien préparer mes examens. Mais je rencontre un petit soucis dans cette exercice.

    Merci d'avance,

    DA en PP : créer un code qui recherche un nom entré par l'utilisateur et vérifie la présence de celui-ci. (Tableau déjà trié)

    Voici le code que j'ai créer :

    Le problème semble apparaitre au niveau de la fonction strcmp(X,Y) lors de la recherche dans le tableau de noms.
    Le compilateur bloque sur cette ligne.
    "error: invalid conversion from 'char' to 'const char*'"
    "error: initializing argument 2 of 'int strcmp(const char*,const char*)'"

    Vos idées sont les Bienvenues ...

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        int ind=0;
        char tabNom[9],nomLu[15];
        while(ind<10)
        {
            printf("\nEntrez un nom : ");
            fflush(stdin);
            scanf("%s",&tabNom[ind]);
            ind++;
        }
        printf("\n\nEntrez un nom recherché : ");
        fflush(stdin);
        gets(nomLu);
        ind=0;
        while((ind<10) && (strcmp(nomLu,tabNom[ind])!=0))
        {
            ind++;
        }
        if(ind==10)
        {
            printf("\nNom Absent !\n");
        }
        else
        {
            printf("\nNom Enregistré !\n");
        }
    }

    -----

  2. #2
    invite4492c379

    Re : [Exercice]Recherche dans un tableau de Noms

    Hello,

    nomLu est une chaine de caractères donc de type char nomLu[15]
    tabNom est un tableau de chaines de caractères donc de type char* tabNom[9] (ou éventuellement char[9][15], un tableau de 9 noms d'au plus 14 caractères ...)

    Attention aux types ...

  3. #3
    Jack
    Modérateur

    Re : [Exercice]Recherche dans un tableau de Noms

    Normal, tabNom et nomLu sont bien des char*, mais toi tu compare nomLu avec tabNom[ind] qui est un char.

    A+

  4. #4
    invite4f00587c

    Re : [Exercice]Recherche dans un tableau de Noms

    Ceci devrai fonctionner alors ... mais ce n'est pas le cas.
    Code:
        ind=0;
        while((ind<10) && (nomLu != tabNom[ind])
        {
            ind++;
        }
    Comment puis-je comparer le nom recherché avec le tableau qui fonctionne comme un pointeur ?

    J'ai pensé à ceci mais toujours pas la bonne réponse.

    Code:
        ind=0;
        while((ind<10) && (nomLu != &tabNom[ind])
        {
            ind++;
        }

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

    Re : [Exercice]Recherche dans un tableau de Noms

    strcmp prend deux paramètres de type char* (on laisse le const de côté pour l'instant). Cette fonction renvoie 0 si les deux chaînes sont égales.

    Le tableau de noms doit être un tableau qui contient des chaînes donc de type char tabnom[9][15] par exemple
    tabnom[0] est un pointeur sur la première chaîne, tabnom[1] sur la deuxiième etc

    nomlu est juste une chaîne donc de type char[15] par exemple, tu peux ensuite comparer tabnom[i] et nomlu avec strcmp.

    Attention aux types utilisés ...

  7. #6
    invite4f00587c

    Re : [Exercice]Recherche dans un tableau de Noms

    Mais "char tabnom[9][15]" écris comme ça c'est un tableau double indice non ?

  8. #7
    invite4492c379

    Re : [Exercice]Recherche dans un tableau de Noms

    Citation Envoyé par Rouchesta Voir le message
    Mais char "tabnom[9][15]" écris comme ça c'est un tableau double indice non ?
    Oui ... si tu préfères, tu peux utiliser char *tabnom[9] mais il faudra gérer l'allocation et la libération de la mémoire pour chaque nom.

    Tu peux voir ce type comme :

    [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14]
    [0] D u p o n t \0
    [1] D u r a n t \0
    [2] D u p o n d \0
    [3] D e L a V a l l i e r e \0
    [4] M a r t i n \0
    [5] M a e s m a e k e r \0
    [6] T o u s s a i n t \0
    [7] Z o r r o \0
    [8] B e r n a r d o \0


    tabnom[1] est la chaîne "Durant" et tabnom[1][3] le caractère 'a'.

    Juste une question de type ... revoir la partie sur les pointeurs serait peut être nécessaire ...

  9. #8
    Jack
    Modérateur

    Re : [Exercice]Recherche dans un tableau de Noms

    Citation Envoyé par Rouchesta Voir le message
    Mais "char tabnom[9][15]" écris comme ça c'est un tableau double indice non ?
    Bin oui, une chaine étant un tableau de caractères, un tableau de chaine est un tableau à 2 dimensions.

    Essaie à nouveau en déclarant tabNom ainsi:
    Code:
        char tabNom[][15] = {"Breton", "Dupond", "Dupont", "Durand", "Martinet"};
    A+

  10. #9
    invite4f00587c

    Post Re : [Exercice]Recherche dans un tableau de Noms

    Nous n'avons pas encore vu les pointeurs :-/

    J'essaie de traduire des diagrammes d'action vus en cours de principe de programmation.

    En procédant comme ceci la réponse est toujours "Nom enregistré !" ...

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        int ind=0;
        char nomLu[15];
        char tabNom[][15] = {"Breton", "Dupond", "Dupont", "Durand", "Martinet"};
        printf("\n\nEntrez un nom recherche : ");
        fflush(stdin);
        gets(nomLu);
        ind=0;
        while(ind<10 && strcmp(nomLu,tabNom[ind])!=0)
        {
            ind++;
        }
        if(ind==10)
        {
            printf("\nNom Absent !\n");
        }
        else
        {
            printf("\nNom Enregistre !\n");
        }
    }

  11. #10
    Jack
    Modérateur

    Re : [Exercice]Recherche dans un tableau de Noms

    Si tu as entré un nom enregistré, ça me semble normal ...

    Remarque:
    Code:
        while(ind<10 && strcmp(nomLu,tabNom[ind])!=0)
    Il faut évidemment adapter ind au nombre de noms existants, donc ind < 5

    A+

  12. #11
    invite4f00587c

    Re : [Exercice]Recherche dans un tableau de Noms

    Ok merci ça fonctionne

Discussions similaires

  1. Recherche noms d'oiseaux islandais
    Par invite913dfc7e dans le forum Identification des espèces animales ou végétales
    Réponses: 3
    Dernier message: 16/08/2009, 23h20
  2. [Divers] Recherche de noms pour une association naturaliste étudiante.
    Par invitec4d2e6d6 dans le forum Biologie
    Réponses: 0
    Dernier message: 16/04/2009, 10h26
  3. Réponses: 3
    Dernier message: 01/08/2008, 14h30
  4. Majuscules noms des éléments dérivant de noms propres
    Par invite6f035949 dans le forum Chimie
    Réponses: 3
    Dernier message: 29/03/2008, 10h32
  5. recherche d'une valeur dans un autre tableau
    Par invite3161da8c dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 18/10/2007, 22h42