Jump to content
Nytro

C/C++ questions

Recommended Posts

Vorbeam cu niste colegi, cateva lucruri interesante de programarea in C/C++.

1. Ai o structura, nu stii exact ce campuri are (ce tipuri). Cum afli dimensiunea unei astfel de structuri fara a folosi operatorul sizeof?

2. Ai un sir de n numere. Cum gasesti si minimul, si maximul, efectuand maxim 3n / 2 comparatii?

3. Ai n siruri de numere (vectori), fiecare avand m numere, ordonate crescator. Cum creezi un singur sir, ordonat, cu toate acele numere, in mod optim. Complexitatea: O(n * m * log n)

4. Cum fortezi ca o clasa sa nu poata fi mostenita (acel "final" din Java)? Fara C++0x sau extensii Microsoft. Intrebarea e dificila, va dau un indiciu: friend.

5. Ai: int x = 3; *(char *)&x = 5; Cat va fi x?

6. Cum ati implementa o clasa care sa faca acelasi lucru ca shared_ptr? Luati in considerare operatii ca Clasa x; Clasa y = x; z = x;

Daca imi mai aduc aminte, revin cu mai multe.

Puteti raspunde aici, sa discutam parerile, sau daca va e lene, e ok si doar sa va ganditi la ele.

Link to comment
Share on other sites

1.


int i0 = 10;
size_t sz = [B]__alignof[/B]( &i0 );
std::cout << "\n\tsz = " << sz << "\n";

gcc il da valid cu -std=c++98 -pedantic

2. as sorta sirul (ma gandesc), iar la final min/max sunt evidente.

mergesort, quicksort, ... naiba sa le ia, toate au un worst case O(n log n)

4. Furaciune de pe SO. Pana acum n-am avut motiv sa scriu asa ceva :)


class Base;
class Blocaj
{
[B]private[/B]:
Blocaj(){};
[B]friend[/B] class Base;
};
class Base : [B]virtual[/B] Blocaj
{
public:
Base(){};
};

class Derived : public Base
{
public:
Derived(){};
};

int main(int, char**)
{
Derived b();
return 0;
}

main.cpp: In constructor ‘Derived :: Derived()’:

main.cpp:14:2: error: ‘Blocaj :: Blocaj()’ is private

Blocaj(){};

^

main.cpp:26:11: error: within this context

Derived(){};

^

6. autoptr.hpp - mihaivasilian - Personal source code (c++) repository. - Google Project Hosting

O incercare timida.

Edited by mihk
Link to comment
Share on other sites

2. Formezi n/2 grupuri de doua numere. Compari numerele din acelasi grup (sunt 2 nr in fiecare grup). Astfel stii min/max pt fiecare grup efectuand n/2 comparatii. Si mai faci de 2 ori n/2 operatii pentru a afla min respectiv max. => 3n/2 comparatii

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...