Szöveges fájlok
A bemenet és kimenet célpontjaiként
használjuk (a konzolablak helyett).
Az <fstream> fejállományban (header)
található ifstream és ofstream
típusokat használjuk fel.
Példa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream kimenet("fajl.txt");
ifstream bemenet("fajl-be.txt");
int x;
bemenet >> x;
kimenet << x+1 << endl;
return 0;
}
|
Fájl létrehozása Code::Blocks-ban:
File / New / Empty File (vigyázzunk a kiterjesztésre)
Létező fájl hozzáadása:
jobb click a projektre bal oldalon / Add files
Feladat
Beolvasunk két egész számot
az “input.txt” fájlból.
Az “output.txt” fájlba írjuk
ki az összegüket, különbségüket,
szorzatukat, osztási hányadosukat
és maradékukat (a második szám
ne legyen nulla).
Példa:
input.txt: 10 3
output.txt:
13
7
30
3
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ofstream kimenet("output.txt");
ifstream bemenet("input.txt");
int x, y;
bemenet >> x >> y;
kimenet << x + y << endl;
kimenet << x - y << endl;
kimenet << x * y << endl;
kimenet << x / y << endl;
kimenet << x % y << endl;
return 0;
}
|
Sorozatok beolvasása fájlból
Adott az n természetes szám az “input.txt” fájlban, majd ezt követi
n darab egész, melyek egy sorozat elemei. Írjuk ki a konzolra az elemek összegét!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int n;
bemenet >> n; // hány elem van
int s = 0;
// n-szer: beolvasunk és hozzáadjuk
for (int i = 1; i <= n; i++) {
int szam;
bemenet >> szam;
s = s + szam;
}
cout << s << endl;
return 0;
}
|
HF
Az “input.txt”-ben adott az n
pozitív egész, majd n darab eleme
egy sorozatnak (egészek).
írjuk ki a legkisebb és legnagyobb
elemet a konzolablakba!
Példa:
input.txt:
5
1 8 -2 3 7
kimenet:
legkisebb: -2
legnagyobb: 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
| #include <fstream>
#include <iostream>
#include <climits>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int n;
bemenet >> n;
// Legkisebb elem meghatározása:
/*
int legkisebb = INT_MAX;
for (int i = 1; i <= n; i++) {
int szam;
bemenet >> szam;
if (szam < legkisebb)
legkisebb = szam;
}
*/
// Másképp:
/*
int legkisebb;
for (int i = 1; i <= n; i++) {
int szam;
bemenet >> szam;
if (i == 1 || szam < legkisebb)
legkisebb = szam;
}
*/
// Legnagyobb elem meghatározása:
/*
int legnagyobb = INT_MIN;
for (int i = 1; i <= n; i++) {
int szam;
bemenet >> szam;
if (szam > legnagyobb)
legnagyobb = szam;
}
*/
// Legkisebb és legnagyobb elem meghatározása egyszerre:
int legkisebb = INT_MAX;
int legnagyobb = INT_MIN;
for (int i = 1; i <= n; i++) {
int szam;
bemenet >> szam;
if (szam < legkisebb)
legkisebb = szam;
if (szam > legnagyobb)
legnagyobb = szam;
}
cout << legkisebb << endl;
cout << legnagyobb << endl;
return 0;
}
|
HF
Adott sorozatból kell a legkisebb páros és a legnagyobb páratlan szám.
(Garantáltan lesz legalább egy páros és legalább egy páratlan.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| #include <fstream>
#include <iostream>
#include <climits>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int n;
bemenet >> n;
int legkisebb = INT_MAX;
int legnagyobb = INT_MIN;
for (int i = 1; i <= n; i++) {
int szam;
bemenet >> szam;
if (szam % 2 == 0 && szam < legkisebb)
legkisebb = szam;
if (szam % 2 != 0 && szam > legnagyobb)
legnagyobb = szam;
}
cout << legkisebb << endl;
cout << legnagyobb << endl;
return 0;
}
|
Elemek beolvasása, míg el nem fogynak
Nem tudjuk előre, hogy hány darab lesz, addig olvasunk, amíg lehet.
Például: írjuk ki, hogy hány elem van a fájlban és mennyi az összegük!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream bemenet("input.txt");
int db = 0;
int s = 0;
int szam;
while (bemenet >> szam) {
// cout << szam << endl;
db++;
s = s + szam;
}
cout << db << endl;
cout << s << endl;
return 0;
}
|
HF
Hasonlóan, a fájl elemei közül határozzuk meg a legkisebbet és legnagyobbat
(szintén nem tudjuk előre, hogy hány eleme van).