#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> eredmeny;
    for (unsigned i = 0; i < db; i++)
        eredmeny.push_back(0);
    eredmeny[0] = 42;
    return eredmeny;
}
struct B {
    int c;
};

struct A {
    string s;
    B b;
};
void minimum(int a, int b, int& x) {
    if (a < b)
        x = a;
    else
        x = b;
}
int file_szamok_osszege(){
    ifstream f("__szamok.txt");
    if (f.fail())
        cerr << "Nem sikerult a fajl megnyitasa.\n";
    int szam, reszosszeg = 0;
    while(f >> szam)
        reszosszeg += szam;
    cout << 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";
}
