| szallitas202310_DK_KSZ_C++.cpp |
|
1 #include <iostream>
2 #include <ctime>
3 #include <vector>
4 #include <numeric> // accumulate (összegzés)
5
6 using namespace std;
7
8 int main()
9 {
10 setlocale(LC_ALL,"");
11 // vector<int> tomegek={16, 8, 9, 4, 3, 2, 4, 7, 7, 12, 3, 5, 4, 3, 2}; # ez volt a forrásban
12
13 // tesztelési célokra használható az alábbi vector
14 vector<int> tomegek;
15 int felsohatar;
16 srand(time(NULL));
17 for(int i=0;i<15;i++)
18 {
19 rand()%3+1==1 ? felsohatar=20: felsohatar=10;
20 tomegek.push_back(rand()%felsohatar+1);
21 }
22 int targyak_szama=tomegek.size();
23 cout << "Tömegek: ";
24 for(auto tomeg:tomegek)
25 cout << tomeg << " ";
26 cout << endl;
27 cout << "2. feladat" << endl;
28 cout << "A tárgyak tömegének összege: " << accumulate(tomegek.begin(),tomegek.end(),0) << " kg" << endl;
29
30 cout << "3. feladat" << endl;
31 vector<int> dobozok;
32 int egy_doboz=0; // egy doboz üres állapottal "indul"
33 for(int i=0;i<15;i++)
34 {
35 if(egy_doboz+tomegek[i]<=20) // ha az aktuális tárgy beletehető egy dobozba,
36 egy_doboz+=tomegek[i]; // akkor beletesszük (+)
37 else // ha nem, akkor
38 {
39 dobozok.push_back(egy_doboz); // előző dobozt a dobozokba helyezzük és
40 egy_doboz=tomegek[i]; // az aktuális tárggyal új dobozt kezdünk
41 }
42 // ez a részprobléma sokféleképpen megoldható
43 if((i+1)==targyak_szama) // ha utolsó tárgyról van szó
44 dobozok.push_back(egy_doboz); // akkor az ő dobozát is tegyük a dobozokba
45 }
46 cout << "A dobozok tartalmának tömege (kg): ";
47 for(auto doboz:dobozok)
48 cout << doboz << " ";
49 printf("\nA szükséges dobozok száma: %d\n",dobozok.size());
50
51 return 0;
52 }