ostapdontstop

mendel

Jan 16th, 2019
190
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5. using namespace std;
  6.  
  7. class element {
  8. private:
  9.     string name;
  10.     char let[3] ;
  11.     int num;
  12.     double weight;
  13. public:
  14.     element (const char* file, vector<element> &v) {
  15.         ifstream fin(file);
  16.         if (!fin) {
  17.             cerr << "missed file!";
  18.             return;
  19.         }
  20.         bool is_complete = 0;
  21.         for(;;) {
  22.  
  23.             if (!(fin >> name))  break;
  24.             is_complete = 0;
  25.  
  26.             if (!(fin >> let >> num >> weight)) break;
  27.             is_complete = 1;
  28.  
  29.             v.push_back(*this);
  30.  
  31.         }
  32.  
  33.         if (!is_complete) {
  34.             cerr << "bad file!";
  35.             v.clear();
  36.             return;
  37.         }
  38.  
  39.         fin.close();
  40.     }
  41.     ~element () {}
  42.  
  43.     bool operator < (const element& x) const {
  44.         return weight < x.weight;
  45.     }
  46.     friend ostream& operator << (ostream &out, const element& x) {
  47.         out << x.name << ' ' << x.let << ' ' << x.num << ' ' << x.weight << ' ';
  48.         return out;
  49.     }
  50. };
  51. int main(int argc, char const *argv[])
  52. {
  53.     vector<element> v;
  54.     element ("els", v);
  55.     if (v.empty()) return 1;
  56.  
  57.     for (vector<element>::iterator it = v.begin(); it != v.end(); ++it)
  58.         cout << *it << '\n';
  59.     return 0;
  60. }
RAW Paste Data