Szöveges fájl I/O

Szöveges fájlok

Bemeneti és kimeneti fájlok hozzáadása Code::Blocks projekthez:

Példa

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream fajl_be("bemenet.txt");
    ofstream fajl_ki("kimenet.txt");

    int n;
    fajl_be >> n;

    fajl_ki << 2*n;
    cout << "megcsinaltam..." << endl;


    return 0;
}

Ha addig akarunk olvasni, míg el nem fogynak a fájlból az elemek (tehát nem tudjuk előre, hogy hány darab lesz), akkor a beolvasási műveletet használhatjuk egy ciklus feltételeként:

1
2
3
4
5
    ifstream bemenet("...");
    int x;
    while (bemenet >> x) {
        // ...
    }

Feladatok

1. Az input.txt fájlban adott egy n term. szám, majd n darab egész, írjuk ki a konzolablakba az elemek átlagá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 <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int n;
    be >> n;

    int osszeg = 0;

    for (int i = 1; i <= n; i++) {
        int szam;
        be >> szam;

        osszeg = osszeg + szam;
    }

    cout << (double)osszeg / n << endl;
    return 0;
}

2. Az input.txt fájlban adottak számok, olvassuk be mindet és írjuk ki a konzolablakba az átlagukat.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int osszeg = 0;
    int n = 0;

    int szam;
    while (be >> szam) {
        osszeg = osszeg + szam;
        n++;
    }

    cout << (double)osszeg / n << endl;
    return 0;
}

3. Adottak természetes számok egy fájlban. Keressük meg és írjuk ki (a konzolra) a két legnagyobbat!

 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
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int legnagyobb = -1;
    int masodik = -1;

    int szam;
    while (be >> szam) {

        if (szam > legnagyobb) {
            masodik = legnagyobb;
            legnagyobb = szam;
        }
        else if (szam > masodik) {
            masodik = szam;
        }
    }

    cout << legnagyobb << " " << masodik << endl;
    return 0;
}

HF. a két legkisebb elem (feltéve, hogy egyik sem nagyobb 1000-nél).

 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
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;

int main()
{
    ifstream be("input.txt");

    int legkisebb = INT_MAX;
    int masodik = INT_MAX;

    int szam;
    while (be >> szam) {

        if (szam < legkisebb) {
            masodik = legkisebb;
            legkisebb = szam;
        }
        else if (szam < masodik) {
            masodik = szam;
        }
    }

    cout << legkisebb << " " << masodik << endl;
    return 0;
}

HF. a három legnagyobb elem.