Nytro Posted July 26, 2013 Report Share Posted July 26, 2013 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. Quote Link to comment Share on other sites More sharing options...
TheTime Posted July 26, 2013 Report Share Posted July 26, 2013 (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 July 26, 2013 by TheTime Quote Link to comment Share on other sites More sharing options...
Nytro Posted July 26, 2013 Author Report Share Posted July 26, 2013 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 Quote Link to comment Share on other sites More sharing options...
mihk Posted July 26, 2013 Report Share Posted July 26, 2013 (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 -pedantic2. 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 July 26, 2013 by mihk Quote Link to comment Share on other sites More sharing options...
skull Posted July 26, 2013 Report Share Posted July 26, 2013 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 Quote Link to comment Share on other sites More sharing options...