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 :

bin packing avec c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut bin packing avec c++
    bonsoir
    j'ai un travail a faire c'est d'affecter les objets dans des boites de telle sorte le tailles des objets soit inferieur ou egale au capacite du boite et l'ojet qu'on a mit dans la boite on peut pas l'affecter une autre fois voici qu'est ce que j'ai fait mail il ne marche pas s'ils vous plait aidennnttt moi c'est tres urgent

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    #include<stdafx.h> 
    #include<time.h>  
    # include <stdlib.h>  
    # include <stdio.h>  
    #include<math.h>  
     
    int i,n,taille,*items,*boites,*M;
    void sommeTableau (int tableau[], int *pointeursomme); 
     
    void tridecroissant(int *M,int n)
    {
    	int i,j,k;
     
    	for(i=0;i<n-1;i++)
    	   for(j=i+1;j<n;j++)
    		 if(M[i]<M[j])
    			{
    				k=M[i];
    				M[i]=M[j];
    				M[j]=k;
    			}
     
    }
    int sommeTableau (int tableau[],int n) 
    { 
    int i; 
    int somme=0;
    for(i=0;i<n;i++) 
    { 
    somme = somme + tableau[i]; 
     
    } 
    return somme;
     
    } 
    int count(int *tab)
    {
          int i;
     
         for (i = 0; tab[i]; i++)
               ; 
         return (i);
    }
    int binpacking(int *M,int *P,int t)
    {
    	bool affecte=false;
    	int i,j,b=0;
    	for(i=0;i<count(M);i++)
    	{
    		affecte=false;
    		for( j=0;j<count(P);j++)
    		{
    			if(t - sommeTableau(M,count(M)) >= P[j])
    				M[i]=P[j];
    				affecte=true;
    				b=count(M);
    				break;	
    		}
    	}
    	return b;
    }
     
     
    // Le programme principal
     
    void main(int argc, char *argv[]) 
    { 
    	//int n;
    int items[9] = {30,50,150,110,56,125,14,87,65}; 
    int *boites;
    boites = new int[n];
    int i=0; 
    int c;
    int somme;
    tridecroissant(items,9);
     
     
    for(i=0; i<9; i++) 
    { 
     
    	printf("%d\n",items[i]); 
    } 
    somme=sommeTableau(items,9);
    printf("la somme est %d\n",somme); 
     
    c=binpacking(boites,items,150);
    printf("la nombre de boite est %d\n",c);
     
    }

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Si tu ne nous dit pas où ça ne marche pas, ce n'est pas aisé de t'aider...
    Sinon, quelques remarques générales en vrac :
    - Si tu fais du C++, et pas du C, utilise std::vector
    - Pour trier, utilise un algorithme existant (std::sort). Ton algorithme actuel est en O(n²), là où des algorithmes en O(n log(n)) existent. C'est criminel ce genre de choses !
    - Soigne mieux ton indentation. Déjà parce que sinon, on n'aura pas envie de lire ton code et de t'aider, et c'est bon pour toi comprendre ce qu'il fait
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    je suis debetante en programmation donc exucé moi pour ce genre là de code.
    bref le problem persiste au niveau de la methode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int binpacking(int *M,int *P,int t)
    voila le resultat du code
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 766
    Par défaut
    En fait c'est ultra logique (du moins de tête sans compilateur)

    Déjà ton code c'est un massacre : il manque un delete[], dans ta fonction count test d'arrêt à la one again, ligne 53 il doit manquer une parenthèse, variable affecte qui ne sert à rien, indentation inexistante

    Et encore plus: utilisation des ++ préfixe, aucun test précondition sur les pointeurs, le return 0 du main.

    Tu as un double problème de logique et 1 d'algo:
    • Logique: Tu fais une soustraction avec 150. Or ton premier élément est 150 (du moins il me semble). Et après ta soustraction est négative (puisque ta somme doit augmenter) et par conséquent ton test devient toujours faux.
    • Logique: Tu fais un parcours sur un tableau vide que tu remplis au fil de l'eau (*)
    • Algo: Ta fonction count doit te retourner une taille + 1. C'est pour cela que tu as 1 seule boîte au lieu de 0


    *: J'ai réfléchi parce, de prime abord, ma précision ne semble pas logique , mais ici l'idée c'est que comme ton tableau est vide, il ne doit pas entrer dans la boucle. .... Mais ceci seulement si le count fonctionne

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Merci tu ma donner une idée et ça marche merci beaucoup

Discussions similaires

  1. Variante du bin packing avec deux contraintes
    Par GoustiFruit dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/03/2012, 21h16
  2. Bin Packing sous Excel
    Par eras2000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/09/2008, 11h11
  3. [CGI-BIN] Problèmes avec les appels systèmes
    Par ozyamdias dans le forum Apache
    Réponses: 1
    Dernier message: 27/08/2007, 17h17
  4. [Des boites et des boites][Bin packing n dimensions]
    Par Théolude dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/05/2007, 11h33
  5. [ALGORITHME] a propos du bin packing
    Par barbot dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 05/01/2004, 23h27

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