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 :

bonjour,ca coince drolement !


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Par défaut bonjour,ca coince drolement !
    Bonjour,

    j'ai ecris un petit programme en C qui consiste à comparer une valeur entière n à une liste (tableau) et verifier que ce dernier se trouve ou non dans la liste
    je rencontre donc un probleme à l'execution de ce petit programme car pour la première valeur du tableau ca marche mais lorsque n vaut 2 ou 3 le programme me repond que ces valeurs ne sont pas dans la liste!!.
    Pourriez vous m'indiquez les modification à effectuer sur mon programme dont voici le contenu ;

    Encor merci à vous!!



    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
     
    int tab[3]={1,2,3}; 
     
    int i,n=0; 
     
    printf("choisir n:"); 
    scanf("%ld",&n); 
     
    for(i=0;i<3;)
    if(tab[i++] == n) 
    {
    printf("ce nombre est dans la liste!!"); 
    }
    else 
    {
    printf("ce nombre n'est pas dans la liste"); 
    }

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 962
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 962
    Par défaut
    Jao,

    Regarde de plus près comment tu as défini ta boucle, et le test.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Par défaut
    ..mais cela ne marche toujours pas avec cette correction :

    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
     
    int tab[3]={1,2,3}; 
    int i,n=0; 
     
    printf("choisir n:"); 
    scanf("%ld",&n); 
     
    for(i=0;i<3;i++)
    if(tab[i++] == n) 
    {
    printf("ce nombre est dans la liste!!"); 
    }
    else 
    {
    printf("ce nombre n'est pas dans la liste"); 
    }

  4. #4
    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
    <...> moi je vois une erreur au niveau de l'affectation.
    Essayer pas-à-pas avec un débogueur

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    As-tu suivi tes cours ????

    Parce que là c'est du n'importe quoi....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(i=0;i<3;i++)
      if(tab[i++] == n)
    ya pas quelque chose qui te choque là-dedans ?????

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Citation Envoyé par flight
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for(i=0;i<3;i++)
    if(tab[i++] == n) 
    {
    printf("ce nombre est dans la liste!!"); 
    }
    else 
    {
    printf("ce nombre n'est pas dans la liste"); 
    }
    Ne manque-t-il pas aussi des accolades aussi pour ta boucle, par hasard?

  7. #7
    Expert confirmé
    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
    Par défaut
    el magnifico
    Ne manque-t-il pas aussi des accolades aussi pour ta boucle, par hasard?
    Non. D'ailleurs, il peut même enlever toutes les accolades. Par contre, il y a beaucoup de i++

  8. #8
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Je débute aussi mais je dirai..

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Citation Envoyé par diogene
    el magnifico
    Non. D'ailleurs, il peut même enlever toutes les accolades. Par contre, il y a beaucoup de i++
    Je parlais d'accolades à ajouter au niveau du for, comme celle ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for(i=0;i<3;i++) 
    { // accolade supplémentaire
    if(tab[i++] == n)
    {
    printf("ce nombre est dans la liste!!"); 
    }
    else
    {
    printf("ce nombre n'est pas dans la liste"); 
    }
    }// accolade fermante correspondante
    Si non, pour quelle raison ne doit-on pas les mettre?

    Pour les accolades à enlever, je pense que tu proposes une solution comme ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i=0;i<3;i++) 
    { // accolade supplémentaire
    if(tab[i++] == n) printf("ce nombre est dans la liste!!"); 
    else printf("ce nombre n'est pas dans la liste"); 
    }// accolade fermante correspondante

  10. #10
    Expert confirmé
    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
    Par défaut
    el magnifico :
    Si non, pour quelle raison ne doit-on pas les mettre?
    Plus exactement on peut ne pas les mettre puisque la boucle for est suivie d'une seule instruction if...else

  11. #11
    Membre éprouvé
    Avatar de TheGzD
    Homme Profil pro
    Ingénieur/ Docteur en Informatique
    Inscrit en
    Avril 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur/ Docteur en Informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 327
    Par défaut
    autre petite chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int i,n=0; 
     
    printf("choisir n:"); 
    scanf("%ld",&n);
    tu as défini n comme étant un int et tu lui assignes une valeur de type long : c'est pas top ça

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 5
    Par défaut
    Citation Envoyé par diogene
    el magnifico :
    Plus exactement on peut ne pas les mettre puisque la boucle for est suivie d'une seule instruction if...else
    Je te remercie pour ta réponse.

    Je n'avais pas pris en considération que la logique du code était mauvaise.

  13. #13
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 67
    Par défaut
    Salut...
    Et comme ça , ça peut marcher je pense


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int tab[3]={1,2,3}; 
    int i,n; 
     
    printf("choisir n:"); 
    scanf("%d",&n); 
    for(i=0;i<3;i++) 
    {
    if(tab[i] == n) printf("ce nombre est dans la liste!!"); /*pour quoi i++?*/ 
    else printf("ce nombre n'est pas dans la liste"); 
    }

  14. #14
    Expert confirmé
    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
    Par défaut
    Et comme ça , ça peut marcher je pense
    La probabilité est bien meilleure

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 3
    Par défaut
    salut, ben ...non tes accolades positionnées de la sorte font qu'il y a repetition de l'instruction (" ce nombre est dans la liste")3 fois et de l'instruction
    ("ce nombre n'est pas dans la liste") 3 fois aussi ,car le printf est dans la boucle ....
    sinon personne ne vois une idée pour mon p'tit probleme...?

    merci quand meme à tous !

  16. #16
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Le code donné par diogène est parfaitement correct, et celui que tu montres aussi. Donc ce n'est pas ça..


    fais voir un print de ton n avant la boucle....


    Je suis pratiquement sûr que c'est le problème du scanf....
    et que donc ton n ne vaut pas ce que tu crois..


    Utiliser le fgets tel que mentionné dans de multiples posts sur le forum

Discussions similaires

  1. Au revoir la Bioch, bonjour l'info!
    Par gege2061 dans le forum Etudes
    Réponses: 19
    Dernier message: 29/04/2005, 10h28
  2. [STRUTS] hello world, bonjour le monde
    Par Celina dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/04/2004, 15h41
  3. Ca coince déjà..
    Par SuperDindon dans le forum DirectX
    Réponses: 2
    Dernier message: 24/03/2004, 07h54
  4. Carré coincé !
    Par GLDavid dans le forum OpenGL
    Réponses: 3
    Dernier message: 11/02/2004, 10h00
  5. Disquette Boot avec message "Bonjour !"
    Par gtr dans le forum x86 16-bits
    Réponses: 11
    Dernier message: 18/01/2003, 16h54

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