[ programmation en c++ ]
Fermé
cléo_cesar
Messages postés
2
Date d'inscription
mercredi 24 janvier 2007
Statut
Membre
Dernière intervention
24 janvier 2007
-
24 janv. 2007 à 15:06
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 25 janv. 2007 à 17:47
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 25 janv. 2007 à 17:47
A voir également:
- [ programmation en c++ ]
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Programmation - Guide
- Application de programmation - Guide
- Logiciel programmation clé voiture gratuit - Forum Programmation
- Programmation logo tortue télécharger - Télécharger - Études & Formations
2 réponses
lirey83
Messages postés
75
Date d'inscription
mardi 2 janvier 2007
Statut
Membre
Dernière intervention
18 août 2007
13
24 janv. 2007 à 17:32
24 janv. 2007 à 17:32
essaies de prendre la verticale qui passe par le barycentre de tous tes points ...
mamiemando
Messages postés
32283
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
17 mars 2023
7 572
25 janv. 2007 à 17:47
25 janv. 2007 à 17:47
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