Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cmath>
- #include <vector>
- #include <sstream>
- using namespace std;
- float degToRad( string s){
- s.replace(s.find(","),s.find(","), ".");
- return (stof(s) * (M_PI / 180));
- }
- int main()
- {
- string LON, LAT, destination ,DEFIB, intermediate;
- int N,cpt;
- cin >> LON >> LAT >> N; cin.ignore();
- float d = 10000000, x, y, d1, latitude, longitude, temp,
- longe = degToRad(LON), latit = degToRad(LAT);
- for (size_t i = 0; i < N; i++) {
- getline(cin, DEFIB);
- // Vector of string to save tokens
- vector <string> tokens;
- // stringstream class check1
- stringstream check1(DEFIB);
- // Tokenizing w.r.t. ';'
- cpt=0;
- while(getline(check1, intermediate, ';'))
- {
- switch (cpt){
- case 4 :
- longitude = degToRad(intermediate);
- break;
- case 5 :
- latitude = degToRad(intermediate);
- break;
- default :
- break;
- }
- cpt++;
- }
- x = (longe - longitude) * cos((latitude+latit)/2);
- y = latit - latitude;
- d1 = sqrt(pow(x,2) + pow(y,2)) * 6371.0;
- if ( d1 <= d ){
- d = d1;
- temp=DEFIB.find(';')+1;
- destination = DEFIB.substr(temp,DEFIB.find(';',temp)-temp);
- if (destination == "Caisse Primaire d'Assurance Maladie")
- cerr << "CPAM : " << d << endl;
- else if (destination=="Caisse d'assurance retraite et de la Sante au travail")
- cerr << "Sante travail : " << d << endl;
- cerr << "mini dist = " << d << endl;
- }
- }
- cout << destination << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement