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 :

[recherche dichotomique dans un tableau trié]


Sujet :

C

  1. #21
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Salut,

    1. int reussi ; : reussi n'est pas initialisé.
    2. if (che_cherchee > t[milieu]) : cle_cherchee et pas che_cherchee.
    3. reussi = (t[milieu]==cle_cherchee); : Ca sert à quoi ?

    Après correction, ton algo ne fonctionne pas. Si tu demandes la valeur 30, cela te répond que cette valeur n'est pas dans le tableau.
    Avant d'envoyer ton code, essaye de le tester complètement avec toutes les valeurs

    [edit] : Attention à l'imbrication des tests if() et else. Utilise les acolades { et } pour bien définir tes blocs.

    Bonne continuation
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  2. #22
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Avant d'envoyer ton code, essaye de le tester complètement avec toutes les valeurs
    A quoi ça sert : si le code marche (enfin fonctionne ...) , il ne le postera pas, il faut être logique ...

  3. #23
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par PRomu@ld
    Avant d'envoyer ton code, essaye de le tester complètement avec toutes les valeurs
    A quoi ça sert : si le code marche (enfin fonctionne ...) , il ne le postera pas, il faut être logique ...
    c'est vrai, dsl.

    Dans ta recherche dichotomique, tu testes si la valeur est supérieure, ou différente de ta valeur centrale (t[milieu]). Alors que tu devrais tester si la valeur est supérieure ou inférieure et ensuite si ces 2 tests sont faux, sortir avec la variable reussi à 1.
    Personnellement, j'aurai en premier testé si la valeur recherchée est égale à la valeur centrale, puis si le test est faux, testé si cette valeur est supérieure ou inférieure toujours à la valeur centrale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(che_cherchee==t[milieu])
      {
      reussi = 1 ;  // Valeur trouvée
      }
    else if(che_cherchee>t[milieu])
      {
      }
    else if(che_cherchee<t[milieu])
      {
      }
    Voila.
    - Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
    - Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)

  4. #24
    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
    Le defaut est simplement sur le test du while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        int reussi = 0; 
    ...
        while ((!reussi) && (gauche <= droite)){
    ....
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/08/2014, 11h10
  2. Recherche aléatoire dans un tableau
    Par Ykroxor dans le forum Excel
    Réponses: 1
    Dernier message: 11/04/2007, 09h58
  3. recherche dichotomique dans un tableu de String
    Par new_wave dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 23/02/2007, 11h53
  4. Réponses: 6
    Dernier message: 05/01/2006, 14h23
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

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