Précédent   Forum du club des développeurs et IT Pro > C et C++ > C
C Forum d'entraide technique sur le langage C. Avant de poster -> F.A.Q. C, Avant de poster.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 31/12/2012, 09h50   #1
Juju485
Invité de passage
 
Homme
Étudiant
Inscription : 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
Juju485 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 10h22   #2
diogene
Responsable Modération
 
Avatar de diogene
 
Homme Patrick Gonord
Enseignant Chercheur
Inscription : juin 2005
Messages : 5 431
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 431
Points : 12 923
Points : 12 923
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 !
diogene est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 31/12/2012, 10h44   #3
Juju485
Invité de passage
 
Homme
Étudiant
Inscription : 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
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
Juju485 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 11h48   #4
kinaesthesia
Membre éclairé
 
Homme Anthony
Java Analyst Developer
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Anthony
Âge : 23
Localisation : Belgique

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

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 344
Points : 344
Envoyer un message via Skype™ à kinaesthesia
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
kinaesthesia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 11h53   #5
fred1599
Membre Expert
 
Avatar de fred1599
 
Homme Fred
Enseignant
Inscription : juillet 2006
Messages : 1 303
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 303
Points : 1 795
Points : 1 795
Citation:
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.

Citation:
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)
fred1599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 13h06   #6
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 13h58   #7
kinaesthesia
Membre éclairé
 
Homme Anthony
Java Analyst Developer
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Anthony
Âge : 23
Localisation : Belgique

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

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 344
Points : 344
Envoyer un message via Skype™ à kinaesthesia
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 ^^
kinaesthesia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 15h52   #8
diogene
Responsable Modération
 
Avatar de diogene
 
Homme Patrick Gonord
Enseignant Chercheur
Inscription : juin 2005
Messages : 5 431
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 431
Points : 12 923
Points : 12 923
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 !
diogene est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h27.


 
 
 
 
Partenaires

Hébergement Web