Salut,
Si j'étais toi, je commencerais par créer la notion de ... coordonnée GPS pour qu'elle puisse être utilisée dans ton code.
Elle pourrait prendre la forme la plus simple possible d'une structure proche de
1 2 3 4
| struct Coordinate{
double longitude;
double latitude:
}; |
Et, comme tu va principalement t'amuser à calculer les distances qui séparent deux coordonnées GPS, tu auras sans doute besoin d'une fonction identique à ce que tu as fais pour ta classe Patient, mais, qui manipule directement les deux coordonnées:
1 2 3
| double distance(Coordinate const & a, coordinate const & b){
/* ... */
} |
Une fois que ce sera fait, tu pourras utiliser cette structure strictement "partout où tu en as besoin", comme, par exemple:
pour maintenir les coordoonées auxquelles se trouvent les différents médecins de ton fichier, sous une forme proche de
std::vector<Coordinate> toubibs;
l'utiliser pour représenter les coordonnées GPS de ton patient, sous une forme proche de
1 2 3 4 5 6 7
| class Patient{
public:
Patient(std::string nom, std::string prenom, Coordinate const &);
Coordinate const & coordinate() const{
return coordinate_;
}
}; |
Note que les toubibs ont aussi au minimum un nom (un prénom) et une coordonnée... Il pourraient donc être représenté sous une forme similaire (et le sont peut être dans ton fichier CSV)
Toujours est-il que l'idée, c'est de lire une seule fois ton fichier CSV, et de maintenir les coordonnées que tu en extrait dans "une collection adaptée" (par exemple, un std::vector). Une fois que ce sera fait, si tu veux calculer la distance entre une coordonnée GPS et les différentes données que tu as extrait de ton fichier, il "suffira" d'utiliser une boucle qui pourrait ressembler à
1 2 3 4
| for(auto const & b : toubibs){
auto dist = distance(patient.coordinate(), b) ;
/* tu fais ce que tu veux du résultat ici ;) */
} |
et le tour sera joué
Partager