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 :

Problème condition dans une fonction de recherche d'un élément


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 116
    Par défaut Problème condition dans une fonction de recherche d'un élément
    Bonjour,

    Je sais que ce problème est bête mais je ne comprends pas.
    Voilà, je souhaiterais écrire un programme qui permet de chercher l'élément ( attaché variable noeudProche(plus faible distance ) à un élement déterminé dans un ensemble d'élément. Quand l'élément n’est pas visité on regarde s’il correspond à les conditions(ligne 45). S’il c’est le cas on prend cet élément. Sinon, on regarde l'élément le plus loin.
    Voici mon bout de programme
    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
    55
    56
    57
    58
    59
     
    int chercherNoeud(int nbreNoeudsTrouve, double **distanceEntreVertices,  GestionNoeuds *pGestionNoeuds, Circuit *pCircuit, int noeudDebut)
    {
        int i,j;
     
        int trouve;
        int noeudProche = 0;
        double distanceMin =1000;
        int chargeProduit1 =0;
        int chargeProduit2 =0;
        int capaciteRestante = capaciteMax;
     
        for(i=0;i<nbreNoeuds;i++)
        {
     
               trouve =0;//trouve est faux
     
     
                   j=0;
                   while(trouve==0&&j<taille)
                   {
     
                         if(i==pCircuit->tableau[j])
                         {
                              trouve = 1;
     
     
                        }
                        else
                        {
     
                             j++;
                        }
     
                   }
                   if(trouve==0 && distanceMin>distanceEntreVertices[noeudDebut][i])
                  {
     
                         chargeProduit1 += pGestionNoeuds->tableau[i].demandProduit1;
                         printf("\nchargeP1 %d\n",chargeProduit1);
                         chargeProduit2+= pGestionNoeuds->tableau[i].demandProduit2;
                         printf("\nchargeP2 %d\n",chargeProduit2);
                         capaciteRestante-=pGestionNoeuds->tableau[i].demandProduit1 + pGestionNoeuds->tableau[i].demandProduit2;
                         printf("\ncapaciteRes %d\n",capaciteRestante);distanceMin = distanceEntreVertices[noeudDebut][i];
                         if(chargeProduit1>=0&&chargeProduit2>=0&&capaciteRestante>=0)
                         {
                               noeudProche = i;
                               printf("noeudProche: %d\n",noeudProche);
                          }
     
     
                   }
     
         }
     
     
         return noeudProche;
    }
    ]
    Omis la ligne 45 le programme me renvoie la liste de nœuds ou d'éléments dans l’ordre croissant de leur distance. Mais, l’ajout de la ligne fait que le programme renvoie que les nœuds dont la variable pGestionNoeuds->tableau[i].demandProduit1>=0&& pGestionNoeuds->tableau[i].demandProduit2>=0. Pourquoi ?
    Je voudrais avoir la liste de nœuds dans l’ordre croissant de leur distance et qui respecte les conditions (ligne 45).
    Merci d'avance de vos aides.

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2011
    Messages : 247
    Par défaut
    Citation Envoyé par laureat Voir le message
    Bonjour,

    Je sais que ce problème est bête mais je ne comprends pas.
    Voilà, je souhaiterais écrire un programme qui permet de chercher l'élément ( attaché variable noeudProche(plus faible distance ) à un élement déterminé dans un ensemble d'élément. Quand l'élément n’est pas visité on regarde s’il correspond à les conditions(ligne 45). S’il c’est le cas on prend cet élément. Sinon, on regarde l'élément le plus loin.
    Qu'est-ce que ça veut dire tout ça? Tu peux donner un exemple? Pas de code, juste les données et ce que le programme doit afficher.

  3. #3
    Membre extrêmement actif
    Avatar de lilington
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2005
    Messages
    681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 681
    Par défaut
    effectivement j'ai rien compris a l'ennonce et ca ne m'a pas encourager a lire le code que j'ai lut en diagonale

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 837
    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 837
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laureat Voir le message
    Bonjour,

    Je sais que ce problème est bête mais je ne comprends pas.
    Bonsoir
    Quand tu feras l'effort de traduire ta pensée par des commentaires dans le code, on fera alors l'effort de le lire et à réfléchir sur ce qu'il s'y passe. mais à ce moment là, cela sera sans doute devenu inutile puisque traduire ta pensée par écrit te fera très certainement réaliser tout seul là où ça cloche dans ton code...

    Citation Envoyé par laureat Voir le message
    Code c : 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
    while(trouve==0&&j<taille)
                   {
     
                         if(i==pCircuit->tableau[j])
                         {
                              trouve = 1;
     
     
                        }
                        else
                        {
     
                             j++;
                        }
     
                   }
    Ouais super. 16 lignes d'écriture (indentées n'importe comment en plus) pour 5 lignes de code utile. Bof bof quoi...
    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]

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/07/2012, 09h47
  2. Réponses: 2
    Dernier message: 29/07/2010, 21h58
  3. condition dans une fonction SQL
    Par schwarzy2 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 23/02/2009, 11h36
  4. vb.net pb dans une fonction de recherche
    Par hajarussa dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/08/2007, 13h03
  5. Problème ginput dans une fonction matlab
    Par matt67 dans le forum MATLAB
    Réponses: 12
    Dernier message: 05/06/2007, 15h24

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