Aide ! ca coince drolement

Bonjour

j'ai commencé un petit bout de programme , il s'agit de comparer un entier choisi à une liste (tableau) , voici mon programme:

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

lorsque n=1 ca marche , mais par pour n=2 ou 3

Pourriez vous m'indiquer les corrections à apporter à mon programme pour qu'il fonctionne ?

Merci infiniment à vous
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    tu ne boucle pas sur les éléments de tableau
    tu testes tab[0] et tu incrémente le i

    if (tab[i++] == n)
    et équivalent à
    if (tab[i] == n)
    ++i;
    et comme i est initialiser à 0 tu ne teste que le 1er élément du tableau

    essaie
    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"); 
    ou pour utiliser ta notation
    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"); 

    1. Merci pour tes reponses , mais apparement le test ne fonctionne toujours pas pour les autres valeurs du tableau.

      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. Salut,

      J'ai test ton programme ça marche chez moi !
      Avec 1, 2 et 3
    3. ...je ne pense pas...
    4. Tu sais, j'ai pas de raison de te mentir mais bon pense ce que tu veux
  2. J'ai juste repris le code en <2>
    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!!\n");
    }
    else
    {
    printf("ce nombre n'est pas dans la liste\n");
    }
    Et j'ai testé pour 1, 2 et 3.
    1. Modérateur
      Salut,

      c'est à flight7218 que j'ai demandé, pas à toi :-))
    2. Oups ok dsl ^^
    3. désolé à la compilation du code produit par Stupflipe ca donne:
      j'ai pour n=1:
      ce nombre est dans la liste!!
      ce nombre n'est pas dans la liste.
      ne nombre n'est pas dans la liste
      appuyer sur une touche pour continuer

      pour n=2
      ce nombre n'est pas dans la liste
      ce nombre est dans la liste!!
      ce nombre n'est pas ans la liste
      appuyer sur une touche pour continuer

      pour n=3:

      ce nombre est dans la liste!!
      ce nombre est dans la liste!!
      ce nombre n'est pas dans la liste.

      j'arrive pas à comprendre d'ou viennent ces reponses

      merci si vous pouvez m'aider à debloquer la situation

      flight
  3. Modérateur
    Salut,

    c'est ça que tu veux?
    lami20j@debian:~/trash$ cat ccm.c
    #include <stdio.h>
    
    #define OUI 1
    #define NON 0
    
    int main ()
    {
      int tab[3] = { 1, 2, 3 };
      int i, n = 0;
      int test = NON;
    
      printf ("choisir n:");
      scanf ("%d", &n);
    
      for (i = 0; i < 3;){
          if (tab[i++] == n){
              test = OUI;
              break;
          }else
                    test = NON;
      }
      if (test == OUI)
        printf ("ce nombre est dans la liste\n");
      else
        printf ("ce nombre n'est pas dans la liste\n");
      return 0;
    }
    lami20j@debian:~/trash$ ./ccm
    choisir n:1
    ce nombre est dans la liste
    lami20j@debian:~/trash$ ./ccm
    choisir n:2
    ce nombre est dans la liste
    lami20j@debian:~/trash$ ./ccm
    choisir n:3
    ce nombre est dans la liste
    lami20j@debian:~/trash$ ./ccm
    choisir n:4
    ce nombre n'est pas dans la liste
    
    1. Ah bah en effet c'est bizarre !! Surtout que moi j'obtiens bien :

      pour n=1:
      ce nombre est dans la liste!!
      ce nombre n'est pas dans la liste.
      ce nombre n'est pas dans la liste.
      appuyer sur une touche pour continuer

      pour n=2
      ce nombre n'est pas dans la liste.
      ce nombre est dans la liste!!
      ce nombre n'est pas dans la liste.
      appuyer sur une touche pour continuer

      pour n=3:

      ce nombre n'est pas dans la liste.
      ce nombre n'est pas dans la liste.
      ce nombre est dans la liste!!
      appuyer sur une touche pour continuer

      J'utilise Visual C++ 6.0 et j'ai compilé normalement. Voilà, si ça peut t'aider...