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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 44
    Points : 0
    Points
    0
    Par défaut bon code mais si j'ai une valeur qui n'est pas dans le tableau il y a pas de printf qui dit cible pas presente
    j'ai fait un vecteur ordre croissant avec des valeurs que le user entre ça marche mais si l'user entre une cible à rechercher pas présente il y a rien qui se passe
    ç'est àdire que normalement il faudrait afficher la cible n'est pas presente.
    Merci de me dire ce qui va pas.


    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    #include<stdlib.h>
    #include <stdio.h>
    main()
    {
     /* Déclarations */
     int vec[50]; /* tableau donné */
     int cible = 0;   /* valeur à rechercher   */
     int position = -1;   /* position de la valeur */
     int nbel = 0;     /* dimension      */
     int i = 0;     /* indice courant */
     int inf, milieu, sup; /* limites du champ de recherche */
     
     /* Saisie des données */
     printf("Dimension du tableau (max.50) : ");
     scanf("%d", &nbel );
     for ( i = 0; i < nbel; i++ )
        {
         printf("Element %d : ", i);
         scanf("%d", &vec[i]);
        }
     printf("Cible a  rechercher : ");
     scanf("%d", &cible );
     /* Affichage du tableau */
     printf("Tableau donne : \n");
     for ( i = 0; i < nbel; i++ )
        printf("%d ", vec[i]);
     printf("\n");
     /* Initialisation des limites du domaine de recherche */
     inf = 1;
     sup = nbel;
     /* Recherche de la position de la valeur */
     position = -1;
     while (( inf <= sup ) && ( position == -1 ))
            {
             milieu =( inf + sup ) / 2;
             if (cible < vec[milieu])
                   sup = milieu-1;
             else
                if (cible > vec[milieu])
                   sup = milieu + 1;
                else
                   position = milieu;
     
            }
     
      /* Edition du résultat */
     if ( position == -1 )
         printf("La cible n'est pas presente\n");
     else
         printf("La valeur %d se trouve a la position %d. \n",
     cible, position + 1);
     return 0;
    }

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bonjour, en respect de notre charte, et précisément de son article IV-N, je ne peux te proposer qu'une seule réponse:

    D'après toi, qu'est-ce qui pourrait ne pas aller?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    @leternel: il me semble que la charte n'empêche pas de donner des indices... une partie du travail a été faite, quand même, dans le cas de exercicec!

    @exercicec: je suis surtout étonné que ton code marche :-) peut-être que ton test n'était pas très complet...
    1. es-tu sûr que la limite "sup" est la seule à changer au cours de l'algorithme?
    2. (accessoire) es-tu sûr qu'un tableau C commence à l'indice 1? pcq c'est ta limite inférieure...

  4. #4
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut une version plus simplifier de tn programme
    Untitled1.cpp
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
    main()
    {
     /* Déclarations */
     int vec[50]; /* tableau donné */
     int cible;   /* valeur à rechercher   */
     int dim;     /* dimension      */
     int i=0 ;     /* indice courant */
     /* Saisie des données */
     printf("Dimension du tableau (max.50) : ");
     scanf("%d", &dim );
     for ( i = 0; i < dim; i++ )
        {
         printf("\n Element %d : ", i+1);
         scanf("%d", &vec[i]);
        }
     printf("\n Cible a  rechercher : ");
     scanf("%d", &cible );
     /* Affichage du tableau */
     printf("\n Tableau donne : ");
     for ( i = 0; i < dim; i++ )
        printf("%d ", vec[i]);
     printf("\n");
     /* Recherche de la position de la valeur */
     i=0 ;
     while ((vec[i]!=cible) && ( i!= dim+1 ))
            {i=i+1;
     
    		}
      /* Edition du résultat */
     if ( i == dim+1 )
         printf("\n La cible n'est pas presente");
     else
         printf("\n La valeur %d se trouve a la position %d. ",cible, i+1);
     return 0;
    }

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par exercicec Voir le message
    mais si l'user entre une cible à rechercher pas présente il y a rien qui se passe ç'est à dire que normalement il faudrait afficher la cible n'est pas presente.
    Ben oui mais normalement, dans ce cas là, tu devrais faire en sorte d'arrêter la boucle de recherche !!!
    On (je) t'ai déjà dit "use your brain" !!!
    Examine cette partie du code
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (cible < vec[milieu])
                   sup = milieu-1;
             else
                if (cible > vec[milieu])
                    sup = milieu + 1;
    Si t'as un tableau contenant 1, 3, 5, 7 et que tu demandes "4", que se passera-t-il ???

    PS: une recherche dichotomique implique de modifier à chaque étape le sup et aussi le inf...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    mais moi je crois que les variable milieu , supérieur.......ne sont pas nécessaire dans ce programme

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Abacar94 Voir le message
    mais moi je crois que les variable milieu , supérieur.......ne sont pas nécessaire dans ce programme
    Ca dépend de son algo. S'il veut faire une dichotomie, alors il est obligé d'avoir un min et un max. Effectivement le milieu reste facultatif puisqu'il est toujours recalculable mais le but d'une variable est quand-même de mémoriser une valeur pour ne pas avoir à la recalculer à chaque fois, non ?
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    si telle est sont choix il y a aucun problème le plus important c'est atteindre le résultat

Discussions similaires

  1. Code UPDATE afin de remplacer une valeur
    Par lordbdp dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/11/2011, 11h55
  2. Tester si une valeur d'entrée est entière
    Par Sedrik dans le forum C++
    Réponses: 4
    Dernier message: 22/10/2007, 18h11
  3. [RegEx] Extraire une valeur si elle est présente
    Par Dia_FR dans le forum Langage
    Réponses: 4
    Dernier message: 06/07/2007, 19h17
  4. Réponses: 2
    Dernier message: 17/06/2005, 13h38

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