#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <fstream>
using namespace std;

#define ellenoriz(felt, pont) if (felt) pont++; else cerr << "Nem teljesul a feltetel a " << __LINE__<< ". sorban." <<endl;

/* Szabalyok:
    - csak az a beugró érvényes, amely nem tartalmaz semmilyen változtatást a main()-ben,
        és már nincs benne kommentezve semmi
    - az "ellenoriz"-en kívül nem tartalmaz #define sorokat, és azt sem szabad megváltoztatni
*/

// Innentol
vector<int> csupa42(int db) {
    vector<int> temp(db, 42);
    // Alternatív megoldás, ha nem jut eszedbe / nem tudod, hogy hogyan működik a vector konstruktora:
    /*vector<int> temp;
    for (int i = 0; i < db; i++)
        temp.push_back(42);*/
    return temp;
}

struct A {
    string s;
    struct {int c;} b;
};
// Egy szokványosabb megoldás az A struct-ra:
/*struct B {
    int c;
};
struct A {
    string s;
    B b;
};*/

void minimum(int x1, int x2, int& y) {
    // Megoldás #1:
    y = min(x1, x2);
    // Megoldás #2:
    /*if (x1 < x2)
        y = x1;
    else
        y = x2;*/
    // Megoldás #3:
    /*y = (x1 < x2 ? x1 : x2);*/
}

int file_szamok_osszege() {
    ifstream bf("__szamok.txt");
    if (bf.fail())
        cerr << "A fajl megnyitasa nem sikerult!\n";
    int reszOsszeg = 0, szam;
    while (bf >> szam)
        reszOsszeg += szam;
    return reszOsszeg;
}
// Idaig

int main()
{
    int pont = 0;
    vector<int> k;
    k = csupa42(10);
    ellenoriz(k.size()==10 && k[0]==42, pont)

    A a;
    a.s="text";
    ellenoriz(a.s=="text", pont)

    a.b.c=1;
    ellenoriz(a.b.c==1, pont)

    int x1=0, x2=0;
    const int test_input = __LINE__;
    minimum(test_input,test_input*2,x1);
    minimum(test_input*2,test_input,x2);
    ellenoriz(test_input==x1 && test_input==x2, pont)

    srand(time(0));
    int osszeg = rand()%1000+1000;
    int tmp = osszeg;
    ofstream f("__szamok.txt");
    for (int i=0;i<10;i++)
    {
        int reszosszeg = rand()%100;
        tmp -= reszosszeg;
        f << reszosszeg << endl;
    }
    f << tmp << endl;
    f.close();
    int olvasottosszeg = file_szamok_osszege();
    ellenoriz(olvasottosszeg == osszeg, pont)

    cout << endl << pont << "/5 pont";
}
