Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ प्रोग्राम ग्रेट सर्कल डिस्टेंस फॉर्मूला का उपयोग करके आस-पास कैब खोजने के लिए

इस लेख में, हम ग्रेट सर्कल डिस्टेंस फॉर्मूले का उपयोग करके लगभग (50 किमी से कम) कैब को खोजने के लिए एक कार्यक्रम पर चर्चा करेंगे।

मान लीजिए कि हमें एक JSON फ़ाइल दी गई है जिसमें उन लोगों के नाम और निर्देशांक हैं जिन्हें कैब की आवश्यकता है और सभी उपलब्ध कैब के निर्देशांक भी हैं।

इसे हल करने के लिए, हम जीपीएस कोऑर्डिनेट को डबल में बदल देंगे। दोहरे रूप से, हम अंत में उन्हें डिग्री में रेडियन में बदल देंगे। फिर हम अंततः उपयोगकर्ता की स्थिति से 50 किमी में उपलब्ध कैब को खोजने के लिए ग्रेट सर्कल डिस्टेंस फॉर्मूला लागू कर सकते हैं।

ध्यान दें कि बड़ी मात्रा में इनपुट डेटा के कारण, हम JSON फ़ाइल को प्रोग्राम में इनपुट के रूप में लेंगे और आउटपुट को किसी अन्य JSON फ़ाइल में भी देंगे।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
#define pi 3.14159265358979323
#define earth_radius 6371.0
//defining the user's coordinates
#define latitude1d 12.9611159
#define longitude1d 77.6362214
ifstream users ("input.access_file");
ofstream out ("output.access_file");
//converting degree to radian
double to_radian(double degree) {
   return ( degree * (pi/180));
}
//to calculate the distance
double cal_distance(double latitude2d, double longitude2d) {
   double lat1, lon1, lat2, lon2, diff_lon, great_circle;
   lat1 = to_radian(latitude1d);
   lon1 = to_radian(longitude1d);
   lat2 = to_radian(latitude2d);
   lon2 = to_radian(longitude2d);
   diff_lon = lon2 - lon1;
   great_circle = acos( sin(lat1) * sin(lat2) + cos(lat1) *cos(lat2) * cos(diff_lon) );
   return (earth_radius * great_circle);
}
//creating structure to access JSON file
struct access_file {
   long long int user_length, i, j, x, y, m, n, f, friends,id[100000];
   char latitude_string[1000], longitude_string[1000], id_string[1000], name[1000];
   double latitude2d, longitude2d;
   string line;
   //to check the value of distance
   void check_distance() {
      if (cal_distance(latitude2d, longitude2d) <=50.0000) {
         id[i] = atoll(id_string);
         i++;
         out << "{\"User_id\": " << id[i - 1] << ", \"Name\": " << name << "}" << endl;
      }
   }
   void file_parser() {
      if (users.is_open()) {
         while (getline(users, line)) {
            f = 0; x = 0; y = 0; friends = 0; m = 0, n = 0;
            user_length = line.size();
            for (j = 0; j < user_length; j++) {
               if (line[j] == '"')
                  f++;
               else if (line[j] == ':')
                  friends++;
               if (f == 3) {
                  j++;
                  while (line[j] != '"') {
                     latitude_string[x] = line[j];
                     x++; j++;
                  }
                  j--; latitude_string[x] = '\0';
               }
               else if (f == 13) {
                  j++;
                  while (line[j] != '"') {
                     longitude_string[y] = line[j];
                     y++; j++;
                  }
                  j--; longitude_string[y] = '\0';
               }
               if (friends == 2) {
                  j += 2;
                  while (line[j] != ',') {
                     id_string[m] = line[j];
                     m++; j++;
                  }
                  j--; id_string[m] = '\0';
                  friends++;
               }
               else if (friends == 4) {
                  j += 2;
                  while (line[j] != ',') {
                     name[n] = line[j];
                     n++; j++;
                  }
                  j--; name[n] = '\0';
                  friends++; f += 2;
               }
            }
            //converting string to float
            latitude2d = atof(latitude_string);
            longitude2d = atof(longitude_string);
            check_distance();
         }
      }
      //closing input file
      users.close();
      //closing output file
      out.close();
   }
};
int main() {
   access_file object;
   object.file_parser();
   return 0;
}

आउटपुट

(A file named output.json will be created at the same place where the code and the input.json file is stored.)

  1. C++ का प्रयोग करके दीर्घवृत्त का क्षेत्रफल ज्ञात करने का कार्यक्रम

    यहां हम देखेंगे कि C++ का उपयोग करके दीर्घवृत्त का क्षेत्रफल कैसे प्राप्त करें। अंडाकार के अलग-अलग हिस्से होते हैं। ये नीचे की तरह हैं। मुख्य बिंदु विवरण केंद्र दीर्घवृत्त का केंद्र। यह रेखा खंडों का भी केंद्र है जो दो फ़ॉसी को जोड़ता है। प्रमुख अक्ष दीर्घवृत्त का सबसे लंबा व्यास nmemb यह तत्व

  1. एलसीएम खोजने के लिए सी ++ प्रोग्राम

    दो संख्याओं का अल्पतम समापवर्तक (LCM) वह छोटी से छोटी संख्या है जो दोनों का गुणज है। उदाहरण के लिए:मान लें कि हमारे पास निम्नलिखित दो संख्याएं हैं:15 और 9. 15 = 5 * 3 9 = 3 * 3 तो, 15 और 9 का एलसीएम 45 है। दो संख्याओं का LCM ज्ञात करने का कार्यक्रम इस प्रकार दिया गया है - उदाहरण #include <iost

  1. सी ++ प्रोग्राम जीसीडी खोजने के लिए

    दो संख्याओं का सबसे बड़ा सामान्य भाजक (GCD) उन दोनों को विभाजित करने वाली सबसे बड़ी संख्या है। उदाहरण के लिए:मान लें कि हमारे पास 45 और 27 दो संख्याएँ हैं। 45 = 5 * 3 * 3 27 = 3 * 3 * 3 तो, 45 और 27 का GCD 9 है। दो संख्याओं का GCD ज्ञात करने का कार्यक्रम इस प्रकार दिया गया है। उदाहरण #include <