Zkouška 15.2 2010

Základní kurs objektově orientovaného programování v C++. Třídy a objekty, zapouzdření, metody, plymorfismus. Abstraktní datové typy, přetěžování. Kontejnery, iterátory, algoritmy. Šablony, generické programování, kompilační polymorfismus. Výjimky. Bezpečné a přenositelné programování, vazby na OS.
Krakonoš
Matfyz(ák|ačka) level I
Příspěvky: 14
Registrován: 29. 1. 2009 11:31
Typ studia: Informatika Mgr.

Zkouška 15.2 2010

Příspěvek od Krakonoš »

Zkouška byla podobná těm na socketce, nicméně objevila se otázka, kterou jsem předtím nikde nepotkal:


Co vrátí následující program? (bylo to zkrácené, já napsal celý program aby si to každý mohl tipnout a hodit do překladače... navíc tam byl trošku komplikovanější příklad, který jsem mezitím zapoměl, nicméně jde tam hodně o prioritu operátoru a zejména hvězdičky - cčkaři jistě vědí, ostatní možná ne tak si to zkusí:-))

Kód: Vybrat vše

#include <iostream>

int f(int *a, int *b) {
    int i = *a + *b;
    *a = i**a;
    return *a;
}

int main(int argc, char **argv) {
    int a = 3;

    std::cout << f(&a, &a) << std::endl;

    return 0;
}
Jinak zkouška easy, opravoval na místě :-)
batman

Re: Zkouška 15.2 2010

Příspěvek od batman »

ten příklad byl trochu jinak:

Kód: Vybrat vše

int a;

int f(int *p, int *q)
{
  *p = a + *q;
  *q = a * *p;
  a = *p + *q; // tak nějak...
  return a;
}

int main()
{
 a = 3;
 f (&a, &a);
}
podstatný je, že 'a' je globální proměnná a předává se do f referencí, takže v tý funkci f vlastně probíhá něco jako:
a = a + a;
a = a * a;
a = a + a;
return a; // výsledek byl 72

i když, teď mě napadlo, jestli nebyly různý varianty... :)
Odpovědět

Zpět na „NPRG041 Programování v C++“