1 #include <iostream>
2 #include <fstream>
3 #include <conio.h>
4 #include <stdio.h>
5 #include <windows.h>
6 #include <cmath> //math.h
7 #include <ctime>
8 #include <string>
9
10 using namespace std;
11
12 struct honap
13 {
14 string hn; //hónap neve
15 int nap; //hónap napjainak száma
16 int ksz; //hónap kezdõsorszáma
17 } ho[12]; //12 hónap tömbje, minden eleme 3 mezõbõl áll
18
19 struct foglalas
20 {
21 int s, sz, e, t, v, r;
22 string az;
23 } fogl[1000];
24
25 int N;
26
27 void F1()
28 {
29 ifstream be;
30 be.open("pitypang.txt");
31
32 be >> N;
33
34 for(int i=0;i<N;i++)
35 {
36 be >> fogl[i].s;
37 be >> fogl[i].sz;
38 be >> fogl[i].e;
39 be >> fogl[i].t;
40 be >> fogl[i].v;
41 be >> fogl[i].r;
42 be >> fogl[i].az;
43 }
44 be.close();
45 }
46
47 void F1_2()
48 {
49 ifstream be;
50 be.open("honapok.txt");
51 for(int i=0;i<12;i++)
52 {
53 be >> ho[i].hn;
54 be >> ho[i].nap;
55 be >> ho[i].ksz;
56 cout << ho[i].hn << " " << ho[i].nap << ho[i].ksz << endl;
57 }
58 be.close();
59 }
60
61 void F2()
62 {
63 int max=0;
64 int maxth=fogl[max].t-fogl[max].e;
65
66 for(int i=1;i<N;i++)
67 {
68 if(fogl[i].t-fogl[i].e>maxth)
69 {
70 max=i;
71 maxth=fogl[i].t-fogl[i].e;
72 }
73 }
74 cout << fogl[max].az << " (" << fogl[max].e << ") - " << maxth << endl;
75 }
76
77 void F3()
78 {
79 int bev=0;
80 int fiz;
81
82 ofstream ki;
83 ki.open("bevetel.txt");
84
85 for(int i=0;i<N;i++)
86 {
87 if(fogl[i].e<121) fiz=9000;
88 if(fogl[i].e>=121&&fogl[i].e<244) fiz=10000;
89 if(fogl[i].e>=244) fiz=8000;
90
91 //pótágy 2000/éj
92 if(fogl[i].v>2) fiz=fiz+(fogl[i].t-fogl[i].e)*2000;
93
94 //reggeli 1100/fõ/nap
95 if(fogl[i].r==1) fiz=fiz+fogl[i].v*(fogl[i].t-fogl[i].e)*1100;
96
97 ki << fogl[i].s << ":" << fiz << endl;
98
99 bev=bev+fiz;
100 fiz=0;
101 }
102 ki.close();
103
104 cout << "Összbevétel: " << bev << endl;
105 }
106
107 int hol_van(int x)
108 {
109 int honap=0;
110 for(int i=0;i<12;i++)
111 {
112 if(i<11)
113 {
114 if(x>=ho[i].ksz&&x<ho[i+1].ksz) honap=i; //Január-november
115 }
116 else
117 {
118 if(x>=ho[i].ksz) honap=i;
119 }
120 }
121 return honap;
122 }
123
124 void F4()
125 {
126 int vej[12];
127 for(int i=0;i<12;i++) vej[i]=0;
128
129 int erk_honap;
130 int tav_honap;
131
132 for(int i=0;i<N;i++)
133 {
134 erk_honap=hol_van(fogl[i].e);
135 tav_honap=hol_van(fogl[i].t);
136
137 if(erk_honap==tav_honap)
138 {
139 vej[erk_honap]+=(fogl[i].t-fogl[i].e)*fogl[i].v;
140 }
141 else
142 {
143 vej[erk_honap]+=(ho[tav_honap].ksz-fogl[i].e)*fogl[i].v;
144 vej[tav_honap]+=(fogl[i].t-ho[tav_honap].ksz)*fogl[i].v;
145 }
146 // cout << "vej: " << vej[erk_honap] << " " << vej[tav_honap] << endl;
147 }
148
149 for(int i=0;i<12;i++)
150 {
151 cout << i+1 << ": " << vej[i] << " vendégéj" << endl;
152 }
153 }
154
155 void F5()
156 {
157 char szabad[27][365];
158 for(int i=0;i<27;i++)
159 {
160 for(int j=0;j<365;j++)
161 {
162 szabad[i][j]=true;
163 }
164 }
165
166 int x,y,z; //x - szoba (sor), y - érkezés napja (oszlopok) z - távozás napja
167 for(int i=0;i<N;i++)
168 {
169 x=fogl[i].sz-1; //-1 mert indexek elcsusznak
170 y=fogl[i].e-1;
171 z=fogl[i].t-1;
172 //foglalások alapján false-ra állítjuk a foglalt napokat az egyes szobákban
173 for(int j=y;j<z;j++)
174 {
175 szabad[x][j]=false;
176 }
177 }
178 //adatok bekérése a felhasználótól: mikor jön és hány éjszakára
179 int enap, ejsz;
180 cout << "Új foglalás" << endl;
181 cout << "Érkezési nap sorszáma: ";
182 cin >> enap;
183 cout << "Eltöltendõ éjszakák száma:";
184 cin >> ejsz;
185 //ejsz hosszú TRUE értékû sorozat keresése a SZABAD mátrixban
186 bool van=false;
187 int j,db;
188 //szobánként haladunk
189 for(int i=0;i<27;i++)
190 {
191 j=enap-1; db=0; //számoljuk az egymást követõ szabad napokat egy-egy szobánál ejsz hosszú "szakaszon"
192 while(j<enap+ejsz-1)
193 {
194 if(szabad[i][j]) db++;
195 j++;
196 }
197 if(db==ejsz)
198 {
199 van=true;
200 cout << i+1 << ". szoba" << endl;
201 break; //Nem elegáns, de ha volt ilyen szabad sorozat, akkor fejezzük be!
202 }
203 }
204 if(!van) cout << "Nincs szabad szoba ebben az idõszakban!" << endl;
205 }
206 int main()
207 {
208 setlocale(LC_ALL, "hun");
209 cout << "1. feladat" << endl;
210 F1();
211 F1_2();
212 cout << "2. feladat" << endl;
213 F2();
214 cout << "3. feladat" << endl;
215 F3();
216 cout << "4. feladat" << endl;
217 F4();
218 cout << "5. feladat" << endl;
219 F5();
220 return 0;
221 }