L'idée du source est de montrer que l'utilisation de la boite à outils de la STL du C++ donne un autre style de programme
J'ai pris le code du source "TRIER UN TABLEAU DE NOTES " de chocho
sur
http://www.cppfrance.com/article.aspx?Val=1442
Je l'ai transposé tel que avec l'utilisation des outils STL.
Il ne s'agit de juger la qualité du source d'origine.
Remarque :
- La programmation avec les outils STL, sur cet exemple, donne un programme sous la forme d'une séquence 'd'instructions'.
- Le plus compliqué est de résoudre l'IHM.
Merci à chocho pour le source originel.
Source / Exemple :
//---- La boite à outils STL pour: Saisir 5 entiers trier et donner le Min et Max --
// - 1 vector est utilisé pour remplacer un tableau
// - 5 fonctions de algorithm réalisent le traitement
// - le plus compliqué est l'IHM avec 2 fonctions 'Maison'
//---------------------------------------- David Saint-Mellion 19/02/2003 ----------
# include<iostream>
# include<vector>
# include<algorithm> // generate() min_element() max_element() sort() copy()
using namespace std;
const int TAILLE=5;
int clavier ();
void affiche( int valMin, int valMax, const vector<int>::iterator itrDebut);
int main(void) {
vector <int> note(TAILLE); // 1
int min=0;
int max=0;
cout<<"Veuillez saisir les notes, a votre demande "<<TAILLE<<" notes"<<endl;
generate(note.begin(), note.end(), clavier); // 2
min=*min_element(note.begin(), note.end()); // 3
max=*max_element(note.begin(), note.end()); // 4
sort(note.begin(), note.end()); // 5
affiche(min, max, note.begin()); // 6
return 0;
}
int clavier (){
int val;
cin>> val;
return (val);
// On peut améliorer la fonction
// en filtrant les valeurs saisies
}
void affiche( int valMin,int valMax,const vector<int>::iterator itrDebut)
{
// Definit un itérateur adaptateur pour afficher sur la sortie standard
ostream_iterator<int> ecran(cout," ");
cout<<"Voici dans l'ordre croissant les notes saisies"<<endl<<"\t";
// Affiche les valeurs du vector à l'écran
copy(itrDebut, itrDebut+TAILLE, ecran); // 61
cout<<endl;
cout<<"\t"<<"La valeur Mini est : "<<valMin<<endl;
cout<<"\t"<<"La valeur Maxi est : "<<valMax<<endl;
}
// ------------------------- COMMENTAIRES ---------------------
// 1 - Remplace un tableau
// 2 - Parcourt la séquence du conteneur vector et affecte à chaque objet
// le retour de la fonction clavier()
// 3 - Renvoie l'itérateur de la valeur la plus grande
// 'opérateur * permet de déréférencer l'itérateur
// pour récupérer la valeur 'pointée'
// 4 - Renvoie l'itérateur de la valeur la plus petite
// 'opérateur * permet de déréférencer l'itérateur
// pour récupérer la valeur 'pointée'
// 5 - Trie la séquence du conteneur vector par ordre croissant
// 6 La fonction affiche les valeurs max et min et les valeurs du conteneur
// Elle recoit l'itérateur sur le début du vector note.begin()
// 61 - Parcourt la séquence et 'passe' chaque objet à écran
// 2 3 4 5 61 sont des fonctions disponibles dans algorithm
// 1 6 sont des fonctions 'Maisons' pour l'IHM
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.