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 de tri


Sujet :

C++

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 1
    Par défaut problème de tri
    bonjour,
    J'ai codé un petit programme d'ordonnancement. Mais le problème se trouve au niveau de la fonction de trie. En fait cette fonction est utilisé trois fois au niveau du programme par contre elle ne fonctionne correctement qu'une seule fois malgré que le code est le même.
    Veuillez trouver ci-joint ce code.
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    #include <iostream>
    #include <vector>
    using namespace std;
    class job
    {
      public:
      int numéro;
      int e_avant;
      int e_après;
      int permutation;
      int max_e_avnap;
      int min_e_avnap;
      int cout;
    };
     
    /* fonction trie_selection_1*/
    vector<job> tri_selection_1(vector<job> V1, int d1)
    {
    	for (int i = 0; i < (d1-1); i++)
    	{
    		int indice_min1 = i;
    		int aux1, aux2;
    		for (int j = i + 1; j < d1; j++)
    		{
    			if (V1[j].e_après < V1[indice_min1].e_après) indice_min1 = j;
    			aux1 = V1[i].e_après;
    			V1[i].e_après = V1[indice_min1].e_après;
    			V1[indice_min1].e_après = aux1;
    			aux2 = V1[i].e_avant;
    			V1[i].e_avant = V1[indice_min1].e_avant;
    			V1[indice_min1].e_avant = aux2;
    		}
    }
    	 return V1;
    }
     
    /* fonction trie_selection_2*/
    vector<job> tri_selection_2(vector<job> V2, int d1)
    {
    	for (int i = 0; i<(d1-1); i++)
    	{
    		int indice_min2 = i;
    		int aux1, aux2;
    		for (int j = i + 1; j<d1; j++)
    		{
    			if (V2[j].e_avant<V2[indice_min2].e_avant) indice_min2 = j;
    			aux1 = V2[i].e_avant;
    			V2[i].e_avant = V2[indice_min2].e_avant;
    			V2[indice_min2].e_avant = aux1;
    			aux2 = V2[i].numéro;
    			V2[i].numéro = V2[indice_min2].numéro;
    			V2[indice_min2].numéro = aux2;
    		}
    	}return V2;
    }
     
     
    /* fonction maximum*/
    int maximum(int a, int b)
    {
    	int max = b;
    	if (a>b)
    		max = a;
    	return max;
    }
     
    /* fonction minimum*/
    int minimum(int a, int b)
    {
    	int min = b;
    	if (a<b)
    		min = a;
    	return min;
    }
     
    /* fonction trie_selection_3*/
    vector<job> tri_selection_3(vector<job> V3, int d1)
    {
    	for (int i = 0; i < (d1 - 1); i++)
    	{
    		int indice_min3 = i;
    		int aux1, aux2;
    		for (int j = i + 1; j < d1; j++)
    		{
    			if (V3[j].cout < V3[indice_min3].cout) indice_min3 = j;
    			aux1 = V3[i].cout;
    			V3[i].cout = V3[indice_min3].cout;
    			V3[indice_min3].cout = aux1;
    			aux2 = V3[i].numéro;
    			V3[i].numéro = V3[indice_min3].numéro;
    			V3[indice_min3].numéro = aux2;
    		}
    	}
    	return V3;
    }
     
     
     
    int main()
    {
    	int dimention1;
    	int sum = 0;
     
    	do
    	{
    		cout << "Entrer la dimention du vecteur :   ";
    		cin >> dimention1;
    	} while (dimention1 < 4);
     
        vector<job> M(dimention1);
    	vector<job> PAS1(dimention1);
    	vector<job> PAS2(dimention1);
     
    	for (int i = 0; i < dimention1; i++)
    	{
    		cout << " le numéro du job est : ";
    		cin >> M[i].numéro;
    		cout<< endl;
    		cout << " l'état de la machine avant l'exécution du job" << i << " est :  " ;
    		cin >> M[i].e_avant;
    		cout << endl;
    		cout<<endl;
    		cout << " l'état de la machine après l'exécution du job" << i << " est :  "  ;
    		cin >> M[i].e_après;
    	}
    /*	cout << "la matrice M = [   ";
    	for (int i = 0; i < dimention1; i++)
    	{
    		cout << M[i].numéro << "   " << M[i].e_avant << "   " << M[i].e_après << "    ]" << endl;
    	}*/
    	cout << endl;
    	M= tri_selection_1(M, dimention1);
    	cout << "la matrice M = [   ";
    	for (int i = 0; i < dimention1; i++)
    	{
    		cout << M[i].numéro << "   " << M[i].e_avant<< "   "<< M[i].e_après  << endl; 
    	}
    	cout << "    ]"<<endl;
    	for (int i = 0; i<dimention1; i++)
    	{
    		PAS1[i].numéro = M[i].numéro;
    		PAS1[i].e_avant = M[i].e_avant;
    	}
    	/*for (int i = 0; i < dimention1; i++)
    	{
    		cout << PAS1[i].numéro << "   " << PAS1[i].e_avant << endl;
    	}
    	cout << "    ]" << endl;
    	*/
    	PAS1 = tri_selection_2(PAS1, dimention1);
    	cout << "la matrice PAS1 = [  ";
    	for (int i = 0; i < dimention1; i++)
    	{
    		cout << PAS1[i].numéro << "   " <<PAS1[i].e_avant <<endl ;
    	}
    	cout <<"    ]"<< endl;
    	for (int i = 0; i<dimention1; i++)
    	{
    		M[i].e_avant = PAS1[i].e_avant;
    		M[i].permutation = PAS1[i].numéro;
    		M[i].max_e_avnap = maximum(M[i].e_avant, M[i].e_après);
    		M[i].min_e_avnap = minimum(M[i].e_avant, M[i].e_après);
    	}	
    		for (int i = 0; i<(dimention1-1); i++)
             M[i].cout = maximum(0, (M[i + 1].min_e_avnap - M[i].max_e_avnap));
     
    cout << "la matrice M = [  ";
    	for (int i = 0; i < dimention1; i++)
    	{
    		cout << M[i].numéro << "   " << M[i].e_après << "   " << M[i].e_avant << "   " << M[i].permutation << "   " << M[i].max_e_avnap << "   " << M[i].min_e_avnap << "   " << M[i].cout  << endl;
    	}
    	cout << "    ]"<< endl;
     
    	for (int i = 0; i<dimention1; i++)
    	{
    		PAS2[i].numéro = M[i].numéro;
    		PAS2[i].cout = M[i].cout;
    	}
    	PAS2 = tri_selection_3(PAS2, dimention1);
    	cout << "la matrice PAS2 = [  ";
    	for (int i = 0; i < dimention1; i++)
    	{
    		cout << PAS2[i].numéro << "   " << PAS2[i].cout << endl;
    	}
    	cout << "    ]" << endl;
     
    	system("PAUSE");
    	return 0;
    }
    Je vous prie de m'aider à détecter ou réside le problème.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    as-tu entendu parler de std::sort ?
    Ou bien ton exercice consiste à écrire la fonction de tri ?
    Que vient faire ce paramètre d1 quand vector a une fonction size ? Héritage d'une fonction mal copiée du C ?
    C'est une impression ou tri_selection, tri_selection1 et tri_selection3 sont absolument identiques ? Quel intérêt selon toi ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    C'est très difficile de t'aider. Ni la lecture de ton code, ni tes explications ne permettent de comprendre ce que tu cherches à faire.
    * Tu écris 3 fois la même fonction! Donc ça fait forcément 3 fois la même chose!
    * Les champs de la classe job ont un rôle pas clair.
    * La fonction de tri ne déplace que des morceaux des job.
    * Le code semble être constitué de choses initialement sensées qui ont été modifiées pour n'avoir plus de sens.

    Je pense qu'il faut repartir du début. Est-ce un exercice? Quelles sont tes données de départ?

Discussions similaires

  1. [MySQL] Problème de tri
    Par pounie dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/10/2005, 13h09
  2. Problème de tri avec analyse croisée
    Par drthodt dans le forum Access
    Réponses: 2
    Dernier message: 18/10/2005, 16h23
  3. [TToolBar] Problème de tri
    Par titiyo dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/09/2004, 09h21
  4. [Collections] Problème de tri
    Par feti2004 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 03/08/2004, 16h45
  5. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 10h44

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