|
ut200910_C++.cpp
|
|
1 #include <iostream>
2 #include <fstream>
3 #include <vector>
4 #include <algorithm>
5 #include <iomanip>
6
7 using namespace std;
8
9 struct jarmu
10 {
11 int o, p, mp, t; // óra, perc, másodperc és áthaladási idõ
12 char v; // város, AHONNAN jön
13 };
14
15 void F1(vector<jarmu> &f)
16 {
17 cout << "1. feladat - adatok beolvasása..." << endl;
18 ifstream fbe;
19 string jarmuvek_szama;
20 fbe.open("forgalom.txt");
21 getline(fbe,jarmuvek_szama);
22 jarmu temp;
23 while(fbe>>temp.o&&fbe>>temp.p&&fbe>>temp.mp&&fbe>>temp.t&&fbe>>temp.v)
24 {
25 f.push_back(temp);
26 }
27 fbe.close();
28 /*
29 for(auto elem:f)
30 {
31 cout << elem.o << " " << elem.p << " " << elem.mp << " " << elem.t << " " << elem.v << endl;
32 }
33 */
34 cout << "----------------------------------------------------------------------------------" << endl;
35 }
36
37 void F2(vector<jarmu> f)
38 {
39 cout << "2. feladat" << endl;
40 int n;
41 cout << "Kérem egy jármû sorszámát: ";
42 cin >> n;
43 char v = f[n-1].v=='A'? 'F': 'A';
44 printf("A(z) %d. jármû %c város felé haladt.\n",n,v);
45 cout << "----------------------------------------------------------------------------------" << endl;
46 }
47
48 int atvalt(vector<jarmu> u, int index)
49 {
50 return u[index].o*3600+u[index].p*60+u[index].mp;
51 }
52
53 void F3(vector<jarmu> f)
54 {
55
56 cout << "3. feladat" << endl;
57 vector<jarmu> utolsok;
58 int i=f.size()-1, n=0;
59 while(n<2)
60 {
61 if(f[i].v=='A')
62 {
63 n++;
64 utolsok.push_back(f[i]);
65 }
66 i--;
67 }
68 if(n==2)
69 {
70 cout << "A két utolsó F-be tartó különbsége: " << atvalt(utolsok,0)+utolsok[0].t-(atvalt(utolsok,1)+utolsok[1].t) << endl;
71 }
72 else
73 {
74 cout << "Sajnos nincs két F-be tartó jármû!" << endl;
75 }
76 cout << "----------------------------------------------------------------------------------" << endl;
77 }
78
79 void F4(vector<jarmu> f)
80 {
81 cout << "4. feladat" << endl;
82
83 vector<vector<int>> matrix(24, vector<int>(2));
84
85 for(auto elem:f)
86 {
87 if(elem.v=='A') matrix[elem.o-1][0]++;
88 else matrix[elem.o-1][1]++;
89 }
90
91 for(int i=0;i<24;i++)
92 {
93 if(matrix[i][0]+matrix[i][1]>0)
94 {
95 cout << i+1 << " ";
96 for(int j=0;j<2;j++)
97 if(matrix[i][j]!=0) cout << matrix[i][j] << " ";
98 cout << endl;
99 }
100 }
101 cout << "----------------------------------------------------------------------------------" << endl;
102 }
103
104 bool t_szerint(const jarmu &a, const jarmu &b)
105 {
106 return a.t < b.t; // itt adjuk meg a rendezési szempontot
107 }
108 void F5(vector<jarmu> f)
109 {
110 cout << "5. feladat" << endl;
111 vector<jarmu> temp;
112 temp=f;
113 sort(temp.begin(),temp.end(),t_szerint);
114
115 cout << fixed;
116 for(int i=0;i<10;i++)
117 {
118 cout << temp[i].o << " " << temp[i].p << " " << temp[i].mp << " " << temp[i].v << " " << setprecision(1) << (float) 1000/temp[i].t << " " << endl;
119 }
120
121 cout << "----------------------------------------------------------------------------------" << endl;
122 }
123
124 void F6(vector<jarmu> f)
125 {
126 cout << "6. feladat" << endl;
127 ofstream fki;
128 fki.open("alsoC++.txt");
129 int kilep, elozo=0;
130 for(int i=0;i<f.size();i++)
131 {
132 if(f[i].v=='F')
133 {
134 kilep=max(elozo,atvalt(f,i)+f[i].t);
135 fki << kilep/3600 << " " << kilep%3600/60 << " " << kilep%3600%60 << endl;
136 elozo=kilep;
137 }
138 }
139 fki.close();
140 }
141
142 int main()
143 {
144 setlocale(LC_ALL,"");
145 vector<jarmu> forgalom;
146 F1(forgalom);
147 F2(forgalom);
148 F3(forgalom);
149 F4(forgalom);
150 F5(forgalom);
151 F6(forgalom);
152 return 0;
153 }
154