Jump to content
Nytro

C/C++ questions

Recommended Posts

Posted

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.

Posted (edited)

1. Declari un vector cu 2 elemente ale acelei structuri si calculezi diferenta intre adresele de memorie ale celor 2 elemente.

1.1. Declari un pointer p, apoi faci diferenta &(p+1) - &p ?

Edited by TheTime
Posted
1. Declari un vector cu 2 elemente ale acelei structuri si calculezi diferenta intre adresele de memorie ale celor 2 elemente.

Da, asta alesesem si eu initial, dar e o varianta mult mai ok :P

Posted (edited)

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
Posted

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

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...