#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
void szamjegyfelbont(int x, int& a, int& b) {
    a = x / 10;
    b = x % 10;
}
struct S {
    string s;
};
string pontok(int db) {
    // Ugyanúgy, ahogy egy vector-t lehet úgy inicializálni, hogy megmondom, hány elemű legyen, és mivel szeretném feltölteni
    // a string esetében is megmondhatom a konstruktornak, hogy milyen hosszú legyen, és milyen karaktert ismételgessen
    string eredmeny(db, '.');
    // De egyébként így is lehetne csinálni, ha ez nem jut az eszedbe:
    /*string eredmeny = "";
    for (int i = 0; i < db; i++)
        eredmeny += '.';*/
    return eredmeny;
}
bool vaneparatlan(vector<int> v) {
    for(unsigned i = 0; i < v.size(); i++)
        if (v[i] % 2 == 1)
            return true;
    return false;
}
// Idaig

int main()
{
    int pont = 0;
    srand(time(0));
    int x = rand() % 100;
    int a,b;
    szamjegyfelbont(x,a,b);
    ellenoriz(10*a+b == x, pont)

    S s;
    s.s="s";
    ellenoriz(s.s=="s", pont)

    string s1 = pontok(4);
    string s2 = pontok(6);
    ellenoriz(s1=="...." && s2 == "......", pont)

    vector <int> v1;
    for (int i=0;i<10;i++) {
        v1.push_back(2*(rand()%10+4));
    }
    vector <int> v2;
    int index = rand()%10;
    for (int i=0;i<10;i++) {
        if (i!= index) {
            v2.push_back(2*(rand()%10+4));
        } else {
            v2.push_back(1+2*(rand()%10+4));
        }
    }
    ellenoriz(vaneparatlan(v1)==false && vaneparatlan(v2)==true, pont)
/*

*/
    cout << endl << pont << "/4 pont";
}
