|
lud202310info.cpp
|
|
1 #include <iostream> // cin, cout
2 #include <fstream> // fájlkezelés
3 #include <vector> // vector adattípus
4 #include <string> // szöveg adattípus
5 #include <algorithm> // maximum (max_element)
6
7 using namespace std;
8
9 void feladat(int f)
10 {
11 printf("-------------------------------------------------------------------------\n");
12 printf("%d. feladat\n" ,f);
13 printf("-------------------------------------------------------------------------\n");
14 }
15
16 void F1_2(vector<string> &osv, vector<int> &dob)
17 {
18 ifstream fbe;
19 fbe.open("osvenyek.txt");
20 string temp;
21 while(fbe >> temp)
22 {
23 osv.push_back(temp);
24 }
25 fbe.close();
26 fbe.open("dobasok.txt");
27 int itemp;
28 while(fbe >> itemp)
29 {
30 dob.push_back(itemp);
31 }
32 cout << endl;
33 feladat(2);
34 cout << "A dobások száma: " << dob.size() << endl;
35 cout << "Az ösvények száma: " << osv.size() << endl;
36 }
37
38 bool max_szempont(string a, string b)
39 {
40 return a.length() < b.length();
41 }
42
43 void F3(vector<string> osv)
44 {
45 feladat(3);
46 vector<string>::iterator it = max_element(osv.begin(),osv.end(),[](string a, string b) {return a.size() < b.size();});
47 string maxh = *it;
48 cout << "Az egyik leghosszabb a(z) " << it - osv.begin() + 1 << ". ösvény, hossza: " << maxh.size() << endl;
49 }
50
51 void F4(vector<string> osv, vector<int> dob, int &os, int &jsz)
52 {
53 feladat(4);
54 cout << "Adja meg egy ösvény sorszámát! ";
55 cin >> os;
56 cout << "Adja meg a játékosok számát! ";
57 cin >> jsz;
58 }
59
60 void F5(vector<string> osv, int os)
61 {
62 feladat(5);
63 vector<char> mezok={'M','V','E'};
64 int db;
65 for(char mezo:mezok)
66 {
67 db = count(osv[os].begin(),osv[os].end(),mezo);
68 if(db>0) printf("%c: %d darab\n",mezo,db);
69 }
70 }
71
72 void F6(vector<string> osv, int os)
73 {
74 ofstream fki;
75 fki.open("kulonleges.txt");
76 char mezo;
77 for(auto i=0;i<osv[os].size();i++)
78 {
79 mezo=osv[os][i];
80 if(mezo!='M') fki << i+1 << "\t" << mezo << endl;
81 }
82 fki.close();
83 }
84
85 void F7(vector<string> osv, vector<int> dob, int os, int jsz)
86 {
87 feladat(7);
88 vector<int> pozicio={0,0,0,0,0}; // max. 5 játékos lehet
89 int vege,nyertes=0;
90 for(auto i=0;i<dob.size()-jsz;i+=jsz)
91 {
92 for(auto j=0;j<jsz;j++)
93 {
94 pozicio[j]+=dob[i+j];
95 if(pozicio[j]>=osv[os].size())
96 nyertes=j+1;
97 vege=i/jsz+1;
98 }
99 if(nyertes!=0) break;
100 }
101 printf("A játék a(z) %d. körben fejeződött be. A legtávolabb jutó(k) sorszáma: %d\n",vege,nyertes);
102 }
103
104 void F8(vector<string> osv, vector<int> dob, int os, int jsz)
105 {
106 feladat(8);
107 vector<int> pozicio={0,0,0,0,0}; // max. 5 játékos lehet
108 vector<int> nyertesek={};
109 int vege=0;
110 for(auto i=0;i<dob.size()-jsz;i+=jsz)
111 {
112 for(auto j=0;j<jsz;j++)
113 {
114 pozicio[j]+=dob[i+j];
115 if(pozicio[j]<osv[os].size())
116 {
117 switch(osv[os][pozicio[j]-1])
118 {
119 case 'V': pozicio[j]-=dob[i+j]; break;
120 case 'E': pozicio[j]+=dob[i+j];
121 }
122 }
123 if(pozicio[j]>=osv[os].size()) nyertesek.push_back(j+1);
124 }
125 if(nyertesek.size()>0) break;
126 }
127 cout << "Nyertes(ek): ";
128 for(auto i=0;i<nyertesek.size();i++)
129 {
130 cout << nyertesek[i] << " ";
131 }
132 if(nyertesek.size()==jsz)
133 cout << "Mindenki nyertes!" << endl;
134 else
135 {
136 cout << "\nA többiek pozíciója:" << endl;
137 for(auto i=0;i<jsz;i++)
138 {
139 if(pozicio[i] < osv[os].size())
140 cout << i+1 << ". játékos, " << pozicio[i] << ". mező" << endl;
141 }
142 }
143 }
144
145 int main()
146 {
147 setlocale(LC_ALL,"");
148 // adatok
149 cout << "TÁRSAS - 2023. október emelt informatika" << endl;
150 vector<string> osvenyek;
151 vector<int> dobasok;
152 int os, jsz;
153 F1_2(osvenyek, dobasok);
154 F3(osvenyek);
155 F4(osvenyek, dobasok, os, jsz);
156 F5(osvenyek,os-1);
157 F6(osvenyek,os-1);
158 F7(osvenyek, dobasok, os-1, jsz);
159 F8(osvenyek, dobasok, os-1, jsz);
160
161 return 0;
162 }