reklam202310_dk_C++.cpp


  1  #include <iostream>         // cin cout
  2  #include <fstream>          // fájlkezelés
  3  #include <vector>           // vector adattípus
  4  #include <set>              // halmaz adattípus
  5  #include <algorithm>        // sort
  6  #include <map>              // szótár (map)
  7  
  8  using namespace std;
  9  
 10  struct rendel
 11  {
 12      int nap;
 13      string varos;           // így egyszerűbb, sztringként...
 14      int db;
 15  };
 16  
 17  void F1(vector<rendel> &r)
 18  {
 19      ifstream fbe;
 20      fbe.open("rendel.txt");
 21      rendel tmp;
 22      while(fbe>>tmp.nap&&fbe>>tmp.varos&&fbe>>tmp.db)
 23      {
 24          r.push_back(tmp);
 25      }
 26      fbe.close();
 27  
 28      /*for(auto elem:r)
 29      {
 30          cout << elem.nap << " " << elem.varos << " " << elem.db << endl;
 31      }*/
 32  }
 33  
 34  void F2(vector<rendel> r)
 35  {
 36      cout << "2. feladat:" << endl;
 37      printf("A rendelések száma: %d\n",r.size());
 38  }
 39  
 40  void F3(vector<rendel> r)
 41  {
 42      cout << "3. feladat:" << endl;
 43      int nap;
 44      cout << "Kérem, adjon meg egy napot: ";
 45      cin >> nap;
 46      int db=0;
 47      for(auto rendeles:r)
 48      {
 49          if(rendeles.nap==nap) db++;
 50      }
 51      printf("A rendelések száma az adott napon: %d\n",db);
 52  }
 53  
 54  void F4(vector<rendel> r)
 55  {
 56      cout << "4. feladat:" << endl;
 57      set<int> nr_napok;
 58      for(auto rendeles:r)
 59      {
 60          if(rendeles.varos=="NR") nr_napok.insert(rendeles.nap);
 61      }
 62      if(nr_napok.size()==30)
 63          printf("Minden nap volt rendelés a reklámban nem érintett városból");
 64      else
 65          printf("%d nap nem volt a reklámban nem érintett városból rendelés\n", 30-nr_napok.size());
 66  }
 67  
 68  bool szempont(rendel a, rendel b)
 69  {
 70      return a.db > b.db;     // csökkenő sorrend rendelés darabszám szerint
 71  }
 72  void F5(vector<rendel> r)
 73  {
 74      cout << "5. feladat:" << endl;
 75      vector<rendel> tmp;
 76      tmp=r;
 77      sort(tmp.begin(),tmp.end(),szempont);
 78      printf("A legnagyobb darabszám: %d, a rendelés napja: %d\n",tmp[0].db,tmp[0].nap);
 79  }
 80  
 81  int osszes(vector<rendel> r, string varos, int nap)
 82  {
 83      int db=0;
 84      for(auto rendeles:r)
 85      {
 86          if(rendeles.varos==varos&&rendeles.nap==nap)
 87              db+=rendeles.db;
 88      }
 89      return db;
 90  }
 91  
 92  void F7(vector<rendel> r)
 93  {
 94      cout << "7. feladat:" << endl;
 95      printf("A rendelt termékek darabszáma a 21. napon PL: %d TV: %d NR: %d\n",osszes(r,"PL",21),osszes(r,"TV",21),osszes(r,"NR",21));
 96  }
 97  
 98  void F8(vector<rendel> r)
 99  {
100      cout << "8. feladat:" << endl;
101      ofstream fki;
102      fki.open("kampany.txt");
103      cout << "Napok" << "\t" << "1..10" << "\t" << "11..20" << "\t" << "21..30" << endl;
104      map<string,vector<int>> varosok;
105      varosok["PL"]={0,0,0};
106      varosok["TV"]={0,0,0};
107      varosok["NR"]={0,0,0};
108      for(auto rendeles:r)
109      {
110          for(int ism=0;ism<3;ism++)
111          {
112              for(int n=1+ism*10;n<11+ism*10;n++)
113              {
114                  if(rendeles.nap==n)
115                      varosok[rendeles.varos][ism]++;
116              }
117          }
118      }
119      for(auto varos:varosok)
120      {
121          cout << varos.first << "\t" << varos.second[0] << "\t" << varos.second[1] << "\t" << varos.second[2] << endl;
122          fki << varos.first << "\t" << varos.second[0] << "\t" << varos.second[1] << "\t" << varos.second[2] << endl;
123      }
124      fki.close();
125  }
126  
127  int main()
128  {
129      setlocale(LC_ALL,"");
130      vector<rendel> rendelesek;
131      F1(rendelesek);
132      F2(rendelesek);
133      F3(rendelesek);
134      F4(rendelesek);
135      F5(rendelesek);
136      F7(rendelesek);
137      F8(rendelesek);
138      return 0;
139  }