Nytro Posted July 26, 2013 Report 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
TheTime Posted July 26, 2013 Report 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
Nytro Posted July 26, 2013 Author Report 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
mihk Posted July 26, 2013 Report 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
skull Posted July 26, 2013 Report 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