1 #include <iostream>
2 #include <iomanip> //setprecision() miatt kell
3 #include <fstream>
4 #include <ctime> //time() függvény miatt kell
5 #include <cstdlib> //srand() és rand() függvények miatt kell
6
7 using namespace std;
8
9 int db, f_db; //fájlban szereplo adatok száma, illetve az F-ek száma
10
11 void kiir(string s)
12 {
13 cout << s << endl;
14 }
15
16 string feldob()
17 {
18 string k;
19
20 int pf;
21
22 pf=rand()%2; //véletlen szám: 0 vagy 1
23
24 if(pf==1) k="I";
25 else k="F";
26
27 return k;
28 }
29
30 void F1()
31 {
32 kiir("1. feladat");
33 cout << "Pénzfeldobás eredménye: " << feldob() << endl;
34
35 }
36
37 void F2()
38 {
39 string tipp, gep;
40 kiir("2. feladat");
41 cout << "Tippeljen! (F/I)=";
42 cin >> tipp;
43 tipp=toupper(tipp[0]); //A string 1. karakterét állítsuk nagybetusre!
44 gep=feldob();
45 cout << "A tipp " << tipp << ", a dobás eredménye " << gep << " volt." << endl;
46 if(tipp==gep) cout << "Ön eltalálta!";
47 else cout << "Ön nem találta el!";
48 cout << endl;
49 }
50
51 void F3()
52 {
53 kiir("3. feladat");
54 string dobas;
55 ifstream fbe;
56 fbe.open("kiserlet.txt");
57 f_db=0; // F-ek száma
58 db=0; // dobások száma
59 while(!fbe.eof())
60 {
61 dobas="";
62 fbe >> dobas;
63 if(dobas.length()>0) //A forrásfájl végén lévo üres sor miatt kell!
64 {
65 db++;
66 if(dobas=="F") f_db++; // Itt számoljuk az F-eket is (a következo feladathoz jó lesz)!
67 }
68 }
69 cout << "A kísérlet " << db << " dobásból állt. (" << f_db << ")" << endl;
70 fbe.close();
71 }
72
73 void F4()
74 {
75 kiir("4. feladat");
76
77 float rel_gyak_f=(float)f_db/(float)db; //Konvertálni kell az intbol floatra, mert különben
78 //nincs törtrész
79 rel_gyak_f=rel_gyak_f*100; //Csak hogy % legyen :)
80 cout << "A kísérlet során a fej relatív gyakorisága ";
81 cout << setprecision(4) << rel_gyak_f << "%"; //setprecision - ehhez kellett az iomanip az elején
82 //setprecision a tizedesjegyekhez!
83 cout << " volt." << endl;
84 }
85
86 void F5()
87 {
88 kiir("5. feladat");
89 string dobas;
90 db=0; //FF-ek száma
91 f_db=0; //F-ek száma
92 ifstream fbe;
93 fbe.open("kiserlet.txt");
94
95 while(!fbe.eof())
96 {
97 dobas="";
98 fbe >> dobas;
99 if(dobas.length()>0)
100 {
101 if(dobas=="F") f_db++; //Ha F jön 1-gyel növeljük
102 if(dobas=="I") //Ha I jön, megnézzük az F-ek számát
103 {
104 if(f_db==2) db++; //Ha 2 akkor növeljük az FF esetek számát
105 f_db=0; //és újra kezdjük majd az F-ek számolását
106 }
107 }
108 }
109 fbe.close();
110 cout << "A kísérlet során " << db << " alkalommal dobtak pontosan két fejet egymás után!" << endl;
111 }
112
113 void F6()
114 {
115 kiir("6. feladat");
116 string dobas;
117 db=0;
118 int maxhossz=0; //maximumkereséshez
119 int hely; //hol kezdodik a leghosszabb F-es sorozat
120 f_db=0; //F-ek száma
121 ifstream fbe;
122 fbe.open("kiserlet.txt");
123 while(!fbe.eof())
124 {
125 dobas="";
126 fbe >> dobas;
127 if(dobas.length()>0)
128 {
129 db++; //dobások száma, a helyhez kell
130 if(dobas=="F") f_db++;
131 if(dobas=="I") //Ha I jön, akkor vége egy F-es sorozatnak
132 {
133 if(f_db>maxhossz) //megnézzük a hosszát (max. keresés)
134 {
135 maxhossz=f_db;
136 hely=db-maxhossz;
137 }
138 f_db=0; //AZ F-es sorozatok számolását "újra" kezdjük
139 }
140 }
141 }
142 cout << "A leghosszabb tisztafej sorozat " << maxhossz;
143 cout << " tagból áll, kezdete a(z) " << hely << ". dobás." << endl;
144 }
145
146 void F7()
147 {
148 kiir("7. feladat");
149 ofstream fki;
150 fki.open("dobasok.txt");
151 string sorozatok[1000]={""}; //1000 db string, mind üres
152 f_db=0; //FFFF-ek száma
153 int i_db=0; //FFFI sorozatok száma
154 for(int i=0;i<1000;i++)
155 {
156
157 for(int j=0;j<4;j++)
158 {
159 sorozatok[i]+=feldob(); //szöveg összefuzése
160 }
161 if(sorozatok[i]=="FFFF") f_db++;
162 if(sorozatok[i]=="FFFI") i_db++;
163 }
164
165 cout << "FFFF: " << f_db << " FFFI: " << i_db << endl;
166 cout << "Fájl írása...";
167 fki << "FFFF: " << f_db << " FFFI: " << i_db << endl;
168 for(int i=0;i<1000;i++)
169 {
170 fki << sorozatok[i] << " ";
171 }
172 fki.close();
173 cout << "...vége!" << endl;
174 }
175
176 int main()
177 {
178 setlocale(LC_ALL, "hun");
179 srand(time(NULL)); //véletlenszám-generátor inicializálása
180 //csak azért kell, hogy minden futtatáskor más számok legyenek,
181 //egyébként elhagyható
182 F1();
183 F2();
184 F3();
185 F4();
186 F5();
187 F6();
188 F7();
189
190 return 0;
191 }