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 fm(){
return 0;
}
// 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;
}
6/6 alap és 4/6 emelt pontnál járok és az utolsó 4 sor kikommentelt részt kéne megoldani, de nem tudom hogyan. annyit sikerült leszűrni, hogy függvény pointerekkel kell valamit baszakodni, de hogy pontosan mint azt nem tudom
This post was edited by xGurke on Aug 29 2012 09:29am