mstoyanov7

Locations

Oct 13th, 2021
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <vector>
  5. #include <cctype>
  6.  
  7. class Location {
  8. public:
  9.     Location(std::string& name, std::string& latitude, std::string& longitude) :
  10.         _name(name), _latitude(latitude), _longitude(longitude) {}
  11.  
  12.     std::string getLocation() {
  13.         std::ostringstream out;
  14.         out << _name << "," << _latitude << "," << _longitude;
  15.         return out.str();
  16.     }
  17.  
  18.     std::string getName() const {
  19.         return _name;
  20.     }
  21.  
  22.     std::string getLatitude() const {
  23.         return _latitude;
  24.     }
  25.  
  26.     std::string getLongitude() const {
  27.         return _longitude;
  28.     }
  29.  
  30. private:
  31.     std::string _name;
  32.     std::string _latitude;
  33.     std::string _longitude;
  34. };
  35.  
  36. std::vector<Location> readLocations() {
  37.     std::vector<Location> locations;
  38.     std::string line;
  39.     while (std::getline(std::cin, line) && line != ".") {
  40.         std::vector<std::string> currLocation;
  41.  
  42.         std::istringstream istr(line);
  43.         std::string word;
  44.  
  45.         while (std::getline(istr, word, ',')) {
  46.             currLocation.push_back(word);
  47.         }
  48.  
  49.         std::string name = currLocation[0];
  50.         std::string latitude = currLocation[1];
  51.         std::string longitude = currLocation[2];
  52.  
  53.         locations.emplace_back(name, latitude, longitude);
  54.     }
  55.     return locations;
  56. }
  57.  
  58. std::vector<std::string> readQueries() {
  59.     std::vector<std::string> queries;
  60.     std::string line;
  61.     while (std::getline(std::cin, line) && line != ".") {
  62.         queries.push_back(line);
  63.     }
  64.     return queries;
  65. }
  66.  
  67. void processSolution(std::vector<Location>& locations, std::vector<std::string>& queries) {
  68.     for (auto& query : queries) {
  69.         if (isalpha(query[0])) {
  70.             for (auto& location : locations) {
  71.                 if (query == location.getName()) {
  72.                     std::cout << location.getLocation() << std::endl;
  73.                 }
  74.             }
  75.         }
  76.         else {
  77.             std::istringstream istr(query);
  78.             std::string currLatitude;
  79.             std::string currLongitude;
  80.             istr >> currLatitude >> currLongitude;
  81.  
  82.             for (auto& location : locations) {
  83.                 if (currLatitude == location.getLatitude() && currLongitude == location.getLongitude()) {
  84.                     std::cout << location.getLocation() << std::endl;
  85.                 }
  86.             }
  87.         }
  88.     }
  89. }
  90.  
  91. int main() {
  92.     auto locations = readLocations();
  93.     auto queries = readQueries();
  94.     processSolution(locations, queries);
  95. }
Advertisement
Add Comment
Please, Sign In to add comment