|
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 }