Advertisement
Infiniti_Inter

Pashgen

May 20th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.59 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5. #include <algorithm>
  6. #include <stdio.h>
  7. #include <iomanip>
  8. using namespace std;
  9.  
  10.  
  11. ifstream fin("input.txt");
  12. /*
  13. Россия; Москва; русский; 145000000; 17100000 км^2; рубли; демократическое федеративное правовое государство с республиканской формой правления; В.В. Путин
  14. Соедененные Штаты Америки; Вашингтон; английский; население: 327000000; 9519431 км^2; доллары США; федеративная президентская республика; Д.Д. Трамп
  15. Украина; Киев; украинский; население: 42000000; 603549 км^2; гривны; парламентско-президентская республика; В.А. Зеленский.
  16. */
  17. struct State {
  18.  
  19.     string title;
  20.     string capital;
  21.     string lang;
  22.     long long  population;
  23.     double sqr;
  24.     string val;
  25.     string type;
  26.     string dictator;
  27.     int i = 0;
  28.  
  29.     void print()
  30.     {
  31.         cout << title << '\t' << capital << '\n' << lang << endl;
  32.         cout << population << '\t' << sqr << endl;
  33.         cout << val << endl;
  34.         cout << type << '\n' << dictator << endl << endl;
  35.     }
  36.  
  37.     void get()
  38.     {
  39.         string s;
  40.         getline(fin, s);
  41.         title = sscanf(s);
  42.         capital = sscanf(s);
  43.         lang = sscanf(s);
  44.         string s_population = sscanf(s);
  45.         population = stringToINT64(s_population);
  46.         string s_sqr = sscanf(s);
  47.         val = sscanf(s);
  48.         sqr = stringToDouble(s_sqr);
  49.         type = sscanf(s);
  50.         dictator = sscanf(s);
  51.  
  52.     }
  53.     string sscanf(string & t)
  54.     {
  55.  
  56.         string s = "";
  57.         char c = '$';
  58.         if (i)i++;//убрать лишние пробелы
  59.         while (t[i] != ';' && i != t.length())
  60.         {
  61.             s += t[i++];
  62.         }
  63.         i++;
  64.         return s;
  65.     }
  66.     long long stringToINT64(string & s)
  67.     {
  68.         long long res = 0;
  69.         long long mult = 1;
  70.         for (int i = s.length() - 1; i >= 0 && isdigit(s[i]); --i, mult *= 10)
  71.             res += mult * (s[i] - '0');
  72.         return res;
  73.     }
  74.     double stringToDouble(string & s)
  75.     {
  76.         double res = 0;
  77.         long long mult = 1;
  78.         int pos = s.find("км^2");
  79.         if (pos == string::npos)
  80.             pos = s.length() - 1;
  81.         pos--;
  82.         for (int i = pos; i >= 0; i--)
  83.             if (isdigit(s[i]))
  84.             {
  85.                 res += mult * (s[i] - '0');
  86.                 mult *= 10;
  87.             }
  88.         return res;
  89.     }
  90.  
  91. };
  92.  
  93. int main()
  94. {
  95.     cout << setprecision(6) << fixed;
  96.     setlocale(LC_ALL, "russian");
  97.  
  98.     int n;
  99.     cin >> n;
  100.     vector<State> a(n);
  101.     for (int i = 0; i < n; ++i)
  102.         a[i].get();
  103.  
  104.     for (int i = 0; i < n; ++i)
  105.         if (a[i].population > 20000000)
  106.             a[i].print();
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement