A voir également:
- [ programmation en c++ ]
- Application de programmation - Guide
- Mettre en veille un programme - Guide
- Programmation envoi sms - Guide
- Ce programme est écrit en python il construit un mot secret ✓ - Forum Python
- Un autre programme est en cours d'installation - Forum Windows 10
2 réponses
Le barycentre ne marchera pas dans le cas général. Je pense que le plsu simple c'est de faire un set ordonné sur l'abscisse, et d'avancer dans son set tant qu'on n'a pas atteint la moitié. Note que si deux points peuvent avoir la même position il faut utiliser un multiset.
Normalement je pense que c'est bon (en fait par défaut les std::pair sont ordonnées d'abord sur le premier membre, donc ici l'abcisse, et ensuite sur le second membre)
Bonne chance
#include <set>
#include <iostream>
typedef std::pair<unsigned int,unsigned int> point_t;
unsigned int milieu(const std::set<point_t> & points){
std::set<point_t>::const_iterator
sit (points.begin()),
send(points.end());
for(unsigned int n=0;sit!=send;++sit,++n){
if(n>=points.size()/2) return sit->first;
}
return 0;
}
int main(){
std::set<point_t> points;
points.insert(std::make_pair(3,5));
points.insert(std::make_pair(6,9));
points.insert(std::make_pair(2,8));
points.insert(std::make_pair(1,1));
std::cout << "xmilieu = " << milieu(points) << std::endl;
return 0;
}
Normalement je pense que c'est bon (en fait par défaut les std::pair sont ordonnées d'abord sur le premier membre, donc ici l'abcisse, et ensuite sur le second membre)
Bonne chance