kolokwium2 wzorcowka


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _

Imię i nazwisko Numer indeksu Login (SPOJ)

drukowanymi literami czas pisania: 45 minut

25 stycznia 2010

Zad. 1. Uzupełnij każde z wyróżnionych pól (używając od 1 do 10 znaków; nie używając średników, przecinków i spacji), tak aby poniższy kod stanowił poprawną definicję klasy, realizującej operacje push
i pop dla stosu liczb całkowitych. (9 pkt.)

class NewStack{

int *mem_block, top;

static const int MAX_SIZE = 1000;

public:

NewStack() {

mem_block = new int[MAX_SIZE];

top = -1;

}

~NewStack () { // destructor

delete[] mem_block;

}

void push (const int &value) {

if (top == MAX_SIZE-1) throw 1; // stack overflow

mem_block[++top] = value;

}

int pop();

};

int NewStack:: pop ([opcjonalnie: void]){

if (top == -1) throw 2; // stack underflow

return mem_block[top--];

}

Zad. 2. Dana jest funkcja recurse, zdefiniowana, jak poniżej. (5 pkt.)

int recurse (int p) { return (p>1) ? (2*recurse(p/2) + recurse(p-2)) : p; }

Jaka będzie wartość zwracana dla wywołania: recurse(2)? 2 recurse(6)? 12

Przy wywołaniu recurse(6), ile razy nastąpi uruchomienie funkcji recurse z wartością argumentu p równą: 0? 2 1? 4 2? 2 3? 1 4? 1 5? 0

Zad. 3. W wyróżnionych polach podaj tekst, który zostanie wypisany przy wykonaniu odpowiednich linii programu. (7 pkt.)

#include <cstdio>

void f1 (int x) { printf ("F1: %d\n", x++); }

void f2 (int y) { printf ("F2: %d\n", y--); }

void f3 (int&z) { printf ("F3: %d\n", z++); }

void (*f[])(int) = {f1,f2};

int main() {

int a = 7, b = a, *c = &b, *&d = c;

f1(*c++); F1: 7

f3(a); F3: 7

f2(b); F2: 7

f3(*d); F3: [dowolna liczba, ew. SIGSEGV]

f[1](2); F2: 2

f+(1); [pusto]

(*f)(1); F1: 1

}

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _

Imię i nazwisko Numer indeksu Login (SPOJ)

drukowanymi literami czas pisania: 45 minut

25 stycznia 2010

Zad. 1. Uzupełnij każde z wyróżnionych pól (używając od 1 do 10 znaków; nie używając średników, przecinków i spacji), tak aby poniższy kod stanowił poprawną definicję klasy, realizującej operacje push
i pop dla stosu liczb całkowitych nieujemnych. (9 pkt.)

class nw_stack{

unsigned *mem_block, top;

static const unsigned MAX_SIZE = 100;

public:

nw_stack () {

mem_block = new unsigned[MAX_SIZE];

top = 0;

}

~nw_stack () { // destructor

delete[] mem_block;

}

void push (const unsigned &number) {

if (top == MAX_SIZE) throw 1; // stack overflow

mem_block[top++] = number;

}

unsigned pop();

};

unsigned nw_stack:: pop ([opcjonalnie: void]){

if (top == 0) throw 2; // stack underflow

return mem_block[--top];

}

Zad. 2. Dana jest funkcja recurse, zdefiniowana, jak poniżej. (5 pkt.)

int recurse (int p) { return (p>1) ? (2*recurse(p/3) + recurse(p-1)) : p; }

Jaka będzie wartość zwracana dla wywołania: recurse(2)? 1 recurse(6)? 9

Przy wywołaniu recurse(6), ile razy nastąpi uruchomienie funkcji recurse z wartością argumentu p równą: 0? 2 1? 5 2? 2 3? 1 4? 1 5? 1

Zad. 3. W wyróżnionych polach podaj tekst, który zostanie wypisany przy wykonaniu odpowiednich linii programu. (7 pkt.)

#include <cstdio>

void f1 (int x) { printf ("A: %d\n", x--); }

void f2 (int y) { printf ("B: %d\n", y--); }

void f3 (int&z) { printf ("C: %d\n", z++); }

void (*f[])(int) = {f1,f2};

int main() {

int a = 5, b = a, *c = &b, *&d = c;

f1(*c++); A: 5

f3(a); C: 5

f2(b); B: 5

f3(*d); C: [dowolna liczba, ew. SIGSEGV]

(*f)(4); A: 4

f+(3); [pusto]

f[1](2); B: 2

}



Wyszukiwarka

Podobne podstrony:
kolokwium1 wzorcowka
do kolokwium interna
WODA PITNA kolokwium
KOLOKWIUM 2 zadanie wg Adamczewskiego na porownawczą 97
kolokwium 1
Materiały do kolokwium III
04 E Model wzorcowyid 5290 ppt
Fizjologia krążenia zagadnienia (II kolokwium)
Algebra liniowa i geometria kolokwia AGH 2012 13
analiza funkcjonalna kolokwium
kolokwiumzTMIC
Biblia NLP Wydanie rozszerzone ponad 350 wzorcow metod i strategii programowania neurolingwistyczneg
kolokwium probne boleslawiec id Nieznany

więcej podobnych podstron