Code
#include <iostream>
#include <cmath>
#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 csak a jelölt szakaszban tartalmaz változtatást,
kivéve természetesen, hogy alapszinten megengedhetõ, hogy az emeltszintû részek
(teljes egészében, és csak azok) ki legyen kommentelve
- a kód az "ellenoriz"-en kívül nem tartalmaz #define sorokat, és azt sem szabad
megváltoztatni
- a mellékelt O2 osztályt kell használni a vonatkozó main() függvény részeknél, nem
szabad saját implementációt csinálni
*/
// Innentol
void f1(int *bead){
5[bead] = 42;
}
class A{
public:
int* a;
int b;
int* c;
int n;
A(){
a = new int;
b=42;
}
A (const A & p)
{
a = new int;
*a = *p.a;
}
void f(int &k){
k++;
c=&k;
}
void f2(){
*c=3;
}
};
struct C{
C* mut;
};
void intezdel(C* &mut){
mut = new C;
mut->mut = mut;
}
class O1 {
public:
virtual ~O1() {}
virtual int f() {return 1;}
};
int f2()
{
}
void fm()
{
}
typedef void (*f3)(int);
// Idaig
int global_int = 0;
class O2 : public O1 {
public:
~O2() {global_int = 1;}
int f() {return 2;}
};
int main() {
int alappont = 0;
int emeltpont = 0;
vector<int> v(10,1);
int * vm = &v[0];
f1(vm);
ellenoriz( v[5]==42 , alappont);
A a;
a.a = &a.b;
a.b = 1;
ellenoriz( a.b==1 , alappont);
A a1;
ellenoriz( a1.b==42 , alappont);
int k = 1;
a.f(k);
ellenoriz( k==2 , alappont);
a.f2();
ellenoriz( k==3 , emeltpont);
C * mut;
intezdel(mut);
ellenoriz( mut->mut->mut->mut->mut == mut , emeltpont);
A b1;
int b1_n = 1;
b1.a = &b1_n;
A b2 = b1;
b1_n = 2;
ellenoriz( *b1.a == 2 && *b2.a == 1 , emeltpont);
O1 o1;
O2 o2;
ellenoriz( o1.f()==1 && o2.f()==2 , alappont);
O1 * o3 = new O2;
ellenoriz( o3->f()==2 , alappont);
O1 * o = new O2;
delete o;
ellenoriz( global_int == 1 , emeltpont);
int (*fm)() = f2;
ellenoriz( fm() , emeltpont);
ellenoriz( f3(f2) , emeltpont);
cout << endl << "Alap: " << alappont << "/6" << endl << "Emelt: " << emeltpont << "/6" << endl;
}
akkor már berakom a készet is, mert biztos mindenkit érdekel