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 :

Probleme sur tableau


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Probleme sur tableau
    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
    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
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 3
    Points
    3
    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 : 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
    // 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 averti
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Points : 444
    Points
    444
    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 éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 784
    Points : 7 043
    Points
    7 043
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é

    Inscrit en
    Août 2006
    Messages
    3 941
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 941
    Points : 5 652
    Points
    5 652
    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.
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Membre averti
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Points : 444
    Points
    444
    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
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    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 !

Discussions similaires

  1. probleme sur un tableau
    Par mattmax dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/04/2012, 15h04
  2. Probleme avec malloc sur tableau de chaine
    Par grex1 dans le forum C
    Réponses: 2
    Dernier message: 12/09/2010, 23h36
  3. Probleme sur affichage d'un tableau
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 12/10/2006, 17h31
  4. probleme sur un tableau
    Par vince2005 dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 18h13
  5. Probleme sur le redim preserve d'un tableau
    Par shinrei dans le forum ASP
    Réponses: 6
    Dernier message: 03/06/2006, 17h12

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