Bonjour,
Je suis en train de mettre en oeuvre le tri par insertion des éléments dans un vector<string>, voici comment j'ai conçu mon programme :
Code cpp : 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 #ifndef INSERTIONSORT_H #define INSERTIONSORT_H #include <iostream> #include <string> #include <vector> using namespace std; class InsertionSort { public: InsertionSort(vector<string>); ~InsertionSort(); InsertionSort(); public: void populate(vector<string>); void sort(vector<string>); void display(vector<string>); void treatment(vector<string>); }; #endif // INSERTIONSORT_H
Code cpp : 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 #include "InsertionSort.h" #include <iostream> #include <string> #include <vector> using namespace std; InsertionSort::InsertionSort(){} InsertionSort::InsertionSort(vector<string> words) { } InsertionSort::~InsertionSort() { cout << "instance is destroyed" << endl; } void InsertionSort::treatment(vector<string> datastore) { populate(datastore); sort(datastore); display(datastore); } void InsertionSort::populate(vector<string> datastore) { string elements = ""; char answer; do { cout << "Enter value : " << flush; cin >> elements; datastore.push_back(elements); cout << "More elements (y/n)? " << flush; cin >> answer; } while(answer == 'y' || answer == 'Y'); cout << datastore.size() << " elements are added to your basket " << endl; // display elements added vector<string>::iterator it; for(it=datastore.begin(); it<datastore.end(); ++it) { cout<< *it << endl; } } /** * @brief Implémentation du tri par insertion des éléments dans un vector * @param datastore le vector pour stocker les éléments */ void InsertionSort::sort(vector<string> datastore) { int indice = 1; // le parcours du vecteur débute à partir du 2ème élément int indiceInserer; string valeurAInserer; while(indice < datastore.size()) { // lors du parcours du tableau on recherche la plus petite valeur et on la stocke dans // la variable valeurAInserer valeurAInserer = datastore[indice]; indiceInserer = indice - 1; // indice de la valeur à insérer while((indiceInserer >= 0) && (valeurAInserer <= datastore[indiceInserer])) { datastore[indiceInserer + 1] = datastore[indiceInserer]; indiceInserer = indiceInserer - 1; } datastore[indiceInserer + 1] = valeurAInserer; indice++; } } void InsertionSort::display(vector<string> datastore) { cout << "Display basket :" << endl; }
Code cpp : 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 #include <InsertionSort.h> #include <iostream> #include <stdlib.h> #include <string> #include <vector> using namespace std; int main() { vector<string> fruits(0); // initialize an empty vector of strings InsertionSort basket(fruits); basket.treatment(fruits); return EXIT_SUCCESS; }
Mon problème est où intégrer dans mon code la fonction de tri et comment l'afficher? Il s'agit d'un problème de conception algorithmique ... mais je coince.
Merci d'avance.
Transact.
Partager