L'objet vector et l'object pair
Bon nombre de problèmes sont liés aux tableaux, il est donc incontournable de connaître ce type d'objet dans un langage de programmation. En C++, on parlera le plus souvent de l'objet vector, mais il en exsite d'autres, le plus important et usité reste celui qu'on présentera ici.
L'objet pair quand à lui est utilisé plus rarement, mais je trouve qu'avec la problématique actuelle, il aurait été dommage de s'en priver. C'est un ensemble d'éléments de taille 2, pas plus ! En python on pourrait le comparer à un tuple de taille 2.
Problématique
Daniel connaît à peu près ses moyennes et voudrai connaître sa moyenne générale,
Mathématiques:15
Français:8
Anglais:12
Histoire-Géographie:7
Sport:19
Musique:9
Tant qu'il y est, il voudrait que ses moyennes ses notes soient rangées dans l'ordre croissant (du plus petit au plus grand).
Donc quelque chose de cet ordre:
Histoire-Géographie:7
Français:8
Musique:9
Anglais:12
Mathématiques:15
Sport:19
Moyenne:11,66666
L'algorithme est simple,
Code:
Somme = 0
Compteur // Nombre de moyennes ajoutées
Tant qu'il y a des moyennes à entrer
Demander la matière
Demander la moyenne
Somme = Somme + moyenne
Moyenne = Somme / Compteur
Afficher Moyenne
Afficher ordre croissant les moyennes
L'objet pair
pair est un objet représentant l'ensemble de strictement 2 éléments (pas plus, pas moins).
Les éléments peuvent être de tous types, il est dans notre cas aisé de connaître les deux types des deux éléments représentés par cet objet.
pair -> (type string, type double)
oui le 2ème élément est un type double, car pour notre moyenne, nous aurons besoin d'être précis.
On construira l'objet de cette façon,
Code:
pair <string, double> matiere;
[CODE]matiere.first = "Mathématiques";
matiere.second = 15;[CODE]
pas très compliqué n'est-ce pas ?
Pour afficher les éléments d'un objet pair, toujours aussi simple,
Code:
cout << matiere.first << ": " << matiere.second << endl;
L'objet vector
C'est un tableau avec un type particulier que vous préciser lors de sa création, il permettra de faire beaucoup de manipulation, comme le tri, somme, mélange aléatoire, ... bref un incontournable !
Avant toute chose, il faut inclure la librairie adéquate,
Code:
#include <vector>
Code:
vector<pair<string, double>> v;
Sinon pour faire un tableau de double rien de plus simple,
Code:
vector<double> v;
Code:
double moyenne[] = {12.5, 5.5, 9};
vector<double> v (moyenne, moyenne+sizeof(moyenne)/sizeof(double));
Ajouter un objet dans un vector
On utilisera sa méthode push_back,
Code:
vector<double> v;
v.push_back(5.5); // ajout de la valeur 5.5 dans le tableau v
v.push_back(15.0);
En imaginant notre exemple précédent où l'on ajoute deux éléments
Code:
vector<double> v;
v.push_back(5.5);
v.push_back(15.0);
for (int i=0; i!=(int)v.size(); i++)
cout << v.at(i) << endl;
La méthode size permet d'avoir le nombre d'éléments de l'objet vector créé.
On pourra plus tard parler des itérateurs, mais c'est encore un peu complexe à comprendre à ce niveau d'avancement.
Tri des données dans un vector
La phase la plus difficile ! Il va falloir me faire confiance et admettre certaines choses,
Nous allons tout d'abord utiliser la méthode sort se trouvant dans la librairie algorithm.
Retenez là bien elle est très utile...
Donc on ajoute dans notre code
Code:
#include <algorithm>
Code:
bool functionSorting(double i, double j){
return i < j;
}
Code:
sort(v.begin(), v.end(), functionSorting);
v.end() récupère l'adresse où se trouve le premier élément
Pas besoin d'en savoir plus, on reverra les itérateurs plus tard, familiarisez vous, vous les verrez souvent par la suite.
Voilà, vous avez tout ce qu'il faut pour résoudre cette problématique, attention de ne pas se faire piéger avec l'objet pair...
from Hackademics : Forum de hacking hackers white hat cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/29mMksi
via IFTTT
Aucun commentaire:
Enregistrer un commentaire