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 :

Dichotomie simple et étagée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut Dichotomie simple et étagée
    Bonjour tlm ;

    Je suis debutant en programmation, je cherche l'algorithme et le programme en C de la dichotomie simple et étagée pour la recherche d'une valeur dans un tableau.

    Meci a vous !

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    En gros tu veux le beurre et l'argent du beurre

    Réalise ton algo (ou voir le forum algo) ensuite tu pourras retranscrire cela en C et à partir de là on pourra plus t'aider.

    Je peux d'ore et déja dire que ton programme va au moins ressembler à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main () {
        return 0;
    }

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par hegros
    En gros tu veux le beurre et l'argent du beurre

    Réalise ton algo (ou voir le forum algo) ensuite tu pourras retranscrire cela en C et à partir de là on pourra plus t'aider.

    Je peux d'ore et déja dire que ton programme va au moins ressembler à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main () {
        return 0;
    }
    Plutôt à cela, non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main (void) {
        return 0;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par mujigka
    Plutôt à cela, non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main (void) {
        return 0;
    }
    Thierry
    Tant qu'a faire alors je dirais plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <stdlib.h>
    int main(int argc,char**argv) {
        return EXIT_SUCCESS;
    }

  5. #5
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par hegros
    Tant qu'a faire alors je dirais plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <stdlib.h>
    int main(int argc,char**argv) {
        return EXIT_SUCCESS;
    }
    Equivalent, sauf que les paramètres argc et argv sont inutiles, car pas utilisés. Je rappelle que int main() engendre un comportement indéterminé.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #6
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par mujigka
    Equivalent, sauf que les paramètres argc et argv sont inutiles, car pas utilisés. Je rappelle que int main() engendre un comportement indéterminé.

    Thierry
    Je ne sais pas d'où tu tiens cela (la norme surement ) mais tu peux toujours essayé de relever le défi de me montrer 1 et 1 seul comportement "bizaroide" en utilisant ce proto.

    Tiens d'ailleurs rapporte nous où tu as lu cela dans la norme ou dans la spécification que ce proto engendre un comportement indeterminé.

    Bon courage

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par mujigka
    Equivalent, sauf que les paramètres argc et argv sont inutiles, car pas utilisés. Je rappelle que int main() engendre un comportement indéterminé.
    Non.

    Ca signifie que le nombre et le type de paramètres n'est pas défini, ce dont on se tape tant que personne n'appelle main(). Or appeler main() est une pratique peu recommandable (interdite en C++).
    est donc acceptable et sans danger, même si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main(void)
    {
    }
    est plus cohérent avec le reste du code qui utilise des prototypes.

  8. #8
    Candidat au Club
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Par défaut Algo
    J'ai l'algo de la dichotomie simple, je peut continuer ?


    //déclarations
    entier : début, milieu, fin, val
    Tnb [0..100] : Tableau d'entier

    //initialisation
    début <- 0
    fin <- 100

    //Question
    Répéter
    Afficher "Valeur recherchée?"
    Saisir val
    Jusqu'à début<=val et val<=fin

    //Boucle de recherche
    Répéter

    //Calcul du milieu
    milieu = arrondiàl'unité((début+fin)/2)

    //Conditions et affectations
    Si val > Tnb[milieu] alors

    début <- milieu + 1

    Sinon

    Si val=Tnb[milieu] alors

    début <- milieu
    fin <- milieu

    Sinon

    fin <- milieu - 1

    Finsi

    Finsi

    jusqu'à début=fin

    //Affichage du résultat
    Afficher "La valeur est ", val

  9. #9
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Superbe si tu es sûr de ton algo il te faut le retranscrire.

    Par exemple

    Entier : debut,fin,val
    Tnb [0..100] : Tableau d'entier

    se transforme en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int debut,fin,val;
    int Tnb[100];
    Ensuite tes Répéter jusqu'a se transforme en do while
    Tes Si en if etc etc etc

    Tu as essayé de le retranscrire en C pour voir ce que ca donne ?

  10. #10
    Membre expérimenté Avatar de wikipierre
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Par défaut
    Salut,
    C'est pas plus simple si tu fait un truc dans le genre ca :

    int i;
    for (i = 0; i < strlen(TonTable); i++)
    {
    if (TonTable[i] == CeQueTuCherches)
    {
    // La tu met le code a éxécuter si il la trouver
    }
    }

  11. #11
    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
    Citation Envoyé par wikipierre
    Salut,
    C'est pas plus simple si tu fait un truc dans le genre ca :

    int i;
    for (i = 0; i < strlen(TonTable); i++)
    {
    if (TonTable[i] == CeQueTuCherches)
    {
    // La tu met le code a éxécuter si il la trouver
    }
    }
    1) il VEUT faire de la recherche dychotomique

    2) strlen(Table) ne marche QUE pour une chaine.

    3) si tu as 25 Millions d'enregistrements, un peu dur de faire une boucle comme ça....



Discussions similaires

  1. [simple] Récupérer sélection d'un TComboBox
    Par Claythest dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/06/2003, 17h30
  2. Effet de transition simple entre 2 images
    Par ChrisFAPS dans le forum Flash
    Réponses: 2
    Dernier message: 18/04/2003, 12h41
  3. Bon je vais essayer d'être simple :
    Par fpouget dans le forum Langage SQL
    Réponses: 8
    Dernier message: 09/04/2003, 17h46
  4. Edition d'un simple fichier java
    Par mcrepin dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 21/03/2003, 14h28
  5. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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