aide moi dichotomie

Voir le sujet précédent Voir le sujet suivant Aller en bas

aide moi dichotomie

Message  zaatout le Jeu 21 Jan 2010 - 14:09

[Merci d'utiliser les balises de code]

Bonjour

voici le programme de recherche dichotomie le pb a la fin je demande si je quitte ou je continue
aide moi svp


Code:

#include<stdio.h>
int main()
{
  int iTableau[]={1,2,3,5,6,8,9};
  int iRecherche,iPremier,iDernier,iMilieu,iTrouve;
  int iFin=1;
 
  while(iFin)
    {
      printf("Quel élément recherchez-vous ? ");
      scanf("%d",&iRecherche);

      iPremier=0;
      iDernier=7;
      iTrouve=0;

      while((iPremier <= iDernier)&&(iTrouve==0))
   {
     iMilieu=(iPremier+iDernier)/2;

     if(iTableau[iMilieu]==iRecherche) iTrouve =1;
     else
       {
         if(iTableau[iMilieu]>iRecherche) iDernier = iMilieu -1;
         else iPremier = iMilieu +1;
       }
   }

      if(!iTrouve) printf("Cette valeur n'appartient pas à la liste\n");
      else printf("Cette valeur appartient à la liste\n");
 
      printf("Voulez-vous continuer ? : 0/1  ");
      scanf("%d",&iFin);

      if(iFin=1){
     
        iTrouve=1;
             
      } else {
              printf(" c'est la fin bye !!!");}
      break;
     
     
          }
}

zaatout

Messages : 1
Date d'inscription : 21/01/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: aide moi dichotomie

Message  -ed- le Ven 22 Jan 2010 - 18:28

Le compilateur indique :
Code:

-------------- Build: Debug in hello ---------------

Compiling: main.c
Linking console executable: bin\Debug\hello.exe
C:\dev\hello\main.c:4: warning: function declaration isn't a prototype
C:\dev\hello\main.c: In function `main':
C:\dev\hello\main.c:36: warning: suggest parentheses around assignment used as truth value
C:\dev\hello\main.c:41: warning: will never be executed
C:\dev\hello\main.c:46: warning: control reaches end of non-void function
Output size is 18.89 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 4 warnings
J'ai donc corrigé les défauts indiqués :
Code:
#include<stdio.h>

int main (void) /* -ed- */
{
  int iTableau[] = { 1, 2, 3, 5, 6, 8, 9 };
  int iRecherche, iPremier, iDernier, iMilieu, iTrouve;
  int iFin = 1;

  while (iFin)
  {
      printf ("Quel élément recherchez-vous ? ");
      scanf ("%d", &iRecherche);

      iPremier = 0;
      iDernier = 7;
      iTrouve = 0;

      while ((iPremier <= iDernier) && (iTrouve == 0))
      {
        iMilieu = (iPremier + iDernier) / 2;

        if (iTableau[iMilieu] == iRecherche)
            iTrouve = 1;
        else
        {
            if (iTableau[iMilieu] > iRecherche)
              iDernier = iMilieu - 1;
            else
              iPremier = iMilieu + 1;
        }
      }

      if (!iTrouve)
        printf ("Cette valeur n'appartient pas à la liste\n");
      else
        printf ("Cette valeur appartient à la liste\n");

      printf ("Voulez-vous continuer ? : 0/1  ");
      scanf ("%d", &iFin);

      if (iFin == 1) /* -ed- */
      {

        iTrouve = 1;

      }
      else
      {
        printf (" c'est la fin bye !!!");
      }
      break;

  }

  return 0; /* -ed- */
}
Ensuite, il y a un break inconditionnel dans la boucle, donc quoiqu'il arrive, on sort de la boucle. Ce break est sans doute mal placé.

_________________
C is a sharp tool !

-ed-
Admin
Admin

Messages : 289
Date d'inscription : 26/05/2008
Age : 60
Localisation : Paris 6eme arrondissement (75, France)

Voir le profil de l'utilisateur http://bien-programmer.fr

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum