Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Discussion: Probleme sur tableau

  1. #1
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut Probleme sur tableau

    Code :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
     
    // Création d'une variable dimensionnée "liste" pouvant contenir 11 entiers
    int liste [11];
     
    // Déclaration de la fonction "saisie" et de la fonction "cherche"
    void saisie (int A[11]);
    int cherche( int A[11] ,int x);
     
    // Définition de la fonction "saisie"
    void saisie ( int A[11] )
    {
        int N, Entier,i;
        do
        {
            printf ("Entrez le nombre d'entier a rentrer : ");
            scanf ("%d",&N);
            printf ("\n");
            if (N>10 || N<0)
            {
                printf ("Veuillez recommencer car la valeur doit etre inferieure a 10 \n");
            }
        ;}while (N>10 || N<0);
     
     
        for (i=0;i<N;i++)
        {
            printf ("Entrez l'entier %d : ",i);
            scanf ("%d",&Entier);
        }
        printf ("\n");
    }
     
    // Définition de la fonction "cherche"
    int cherche ( int A[11] ,int x)
    {
        printf ("Taper un chiffre : ");
        scanf ("%d",&x);
        printf ("\n");
        int i;
        int taille = sizeof(int*)/sizeof(int);
        for (i=0;i<taille;i++)
        {
            if (A[i]==x)
            {
                printf ("La valeur %d est bien dans le tableau",x);
            }
            else
            {
                printf ("-1 car la valeur n'est pas dans la liste");
            }
     
        }
        return 0;
     
    }
     
     
    // Programme principal
    int main(void)
    {
       int A,B,N,x;
       int xvar;
       saisie (A);
     
       xvar=cherche(A,x);
       return 0;
    }
    Salut voila j'ai un problème sur la fonction cherche et je vois quesqu'il ne va pas donc si vous pouvez m'aider
    Merci

  2. #2
    Responsable Modération
    Avatar de diogene
    Homme Profil pro Patrick Gonord
    Enseignant Chercheur
    Inscrit en
    juin 2005
    Messages
    5 665
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrick Gonord
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2005
    Messages : 5 665
    Points : 13 781
    Points
    13 781

    Par défaut

    Code :
    int taille = sizeof(int*)/sizeof(int);
    Ce genre de calcul n'a aucun sens. Si il s'agit de trouver la taille du tableau en paramètre, ça ne va pas le faire. Il faut
    - soit passer aussi la taille du tableau en paramètre
    - soit inscrire dans le tableau une indication sur sa taille (cf par exemple les chaines de caractères dont la taille est déterminée grace au '\0' terminal)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Oui voila c'est cela qui me pose probleme car c'est mon prof qui a dit de faire sa donc .
    Il faut le mettre comme ça alors :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // Définition de la fonction "cherche"
    int cherche ( int A[11] ,int taille, int x)
    {
        printf ("Taper un chiffre : ");
        scanf ("%d",&x);
        printf ("\n");
        int i;
        int taille = sizeof(int*)/sizeof(int);
        for (i=0;i<taille;i++)
        {
            if (A[i]==x)
            {
                printf ("La valeur %d est bien dans le tableau",x);
            }
            else
            {
                printf ("-1 car la valeur n'est pas dans la liste");
            }
     
        }
        return 0;
     
    };
    Je bloque sur cette fonction cherche

    Voici le sujet pour que cela soit plus clair :
    On vous demande d'écrire un programme C qui résolve le problème suivant. À partir d’un premier ensemble
    A de N1 nombres entiers différents positifs donnés et d’un second ensemble B de N2 nombres entiers
    différents positifs donnés, détermine et écrit, s’ils existent, tous les nombres qui sont communs aux deux
    ensembles. Dans le cas où il n’y aurait pas de nombre commun, le programme l’indiquera par un message.
    Les données sont rangées dans une variable dimensionnée dans l’ordre suivant :
    ! {"N, valeur du 1er nombre,… , valeur du N-ième nombre"}.
    Pour résoudre ce problème vous procéderez obligatoirement de la façon suivante :
    1. Créez un type de variable dimensionnée pouvant contenir 11 entiers appelé liste.
    2. Ecrirez une fonction void saisie( liste A) qui saisira N nombres du premier ensemble pour les ranger
    dans une variable de type liste transmise en paramètre. N sera saisi dans la fonction saisie qui empêchera
    que N soit supérieur à 10 en recommençant la saisie tant que N est supérieur à 10.
    3. Ecrirez une fonction int cherche( liste A, int x) qui cherche la présence d’un nombre x dans la variable
    de type liste A et qui retournera :
    - -1 si le nombre n’est pas présent dans le tableau,
    - la valeur de ce nombre sinon.
    4. Dans la fonction main(), à l’aide des deux fonctions précédemment écrites, vous créerez deux listes A et
    B et procèderez à la saisie de ces deux listes à l'aide de la fonction saisie.
    5. Déterminez, à l'aide de la fonction cherche, tous les nombres de la liste A appartenant à la liste B. Ces
    nombres seront les rangés dans une troisième liste C qui contiendra tous les nombres communs aux deux
    premières listes.
    6. Affichez à l'écran le contenu de la liste C
    Indication : L'élément d'indice zéro d'une liste est le nombre de points qu'elle contient

  4. #4
    Membre éclairé
    Homme Profil pro Anthony
    Java Analyst Developer
    Inscrit en
    mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Nom : Homme Anthony
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Java Analyst Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2011
    Messages : 129
    Points : 346
    Points
    346

    Par défaut

    Vu que dans ton énoncé il est explicitement défini que c'est 11 entiers tu peux te permettre de créer une variable globale avec :

    #define TAILLE_MAX 11

  5. #5
    Expert Confirmé
    Avatar de fred1599
    Homme Profil pro Fred
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    1 731
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 731
    Points : 2 598
    Points
    2 598

    Par défaut

    1. Créez un type de variable dimensionnée pouvant contenir 11 entiers appelé liste.
    Tu as ta taille, donc la demande de l'énoncé se justifie, tu n'as pas besoin de la taille en paramètre.

    Code :
    int cherche ( int A[11] ,int taille, int x);
    Cette fonction est censée retourner un entier, hors printf ne retourne pas mais affiche à l'écran le résultat demandé.

    Voilà à quoi doit ressembler ta fonction, il y a que 2 possibilités de retour, soit -1 au cas où on ne trouve pas le nombre recherché, soit la valeur recherchée si trouvée dans la liste.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int cherche(int A[], int x)
    {
       /* code */
     
          return x;
     
       /* code */
     
       return -1;
    }
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Expert Confirmé Sénior
    Inscrit en
    août 2006
    Messages
    3 532
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 532
    Points : 4 015
    Points
    4 015

    Par défaut

    Gia,
    Citation Envoyé par kinaesthesia Voir le message
    Vu que dans ton énoncé il est explicitement défini que c'est 11 entiers tu peux te permettre de créer une variable globale avec :

    #define TAILLE_MAX 11
    Tu ne définis pas une variable, mais une macro.
    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  7. #7
    Membre éclairé
    Homme Profil pro Anthony
    Java Analyst Developer
    Inscrit en
    mai 2011
    Messages
    129
    Détails du profil
    Informations personnelles :
    Nom : Homme Anthony
    Âge : 24
    Localisation : Belgique

    Informations professionnelles :
    Activité : Java Analyst Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2011
    Messages : 129
    Points : 346
    Points
    346

    Par défaut

    Citation Envoyé par droggo Voir le message
    Gia,

    Tu ne définis pas une variable, mais une macro.
    Autant pour moi je n'avais plus fait de C depuis longtemps.

    Le but recherché était de définir une constante ^^

  8. #8
    Responsable Modération
    Avatar de diogene
    Homme Profil pro Patrick Gonord
    Enseignant Chercheur
    Inscrit en
    juin 2005
    Messages
    5 665
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrick Gonord
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2005
    Messages : 5 665
    Points : 13 781
    Points
    13 781

    Par défaut

    D'après la dernière phrase de l'énoncé, le nombre d'éléments du tableau est dans le premier élément du tableau (et peut être <11). Du coup, on se trouve dans le deuxième cas de mon message précédent : l'indication de la taille est codée dans le tableau. Il n'est pas donc nécessaire de passer taille en argument (et il faut exclure le premier élément de la recherche).
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •