Se considera un meniu principal ce contine doua optiuni: - Operatii de baza - Operatii extinse 1. Operatii de baza Sa se afiseze un meniu ce contine urmatoarele optiuni: - Creare manuala a vectorului (se citeste si o valoare n reprezentand numarul de elemente) - Generare automata a vectorului (se citeste si o valoare n reprezentand numarul de elemente) - Afisare - Cautare Nota: Vectorul va contine numere intregi iar ordonarea va fi realizata la inserare, fara a utiliza ulterior algoritmi de sortare. 2. Operatii extinse Scopul operatiilor extinse este de a demonstra utilitatea cautarii binare prin compararea cu cautarea secventiala. Se va utiliza un vector uzual in care elementele sunt adaugate secvential si un vector in care elementele sunt inserate asa incat sa rezulte un vector ordonat. Elementele vectorilor reprezinta siruri de caractere (exact 100 de caractere fiecare) generate aleator. Sa se afiseze un meniu cu urmatoarele optiuni: - Generare automata a celor doi vectori (cu citirea in prealabil a numarului de elemente n) - Afisarea elementelor de pe pozitiile n/4, n/2 si n - Timpul de cautare comparativ al elementului aflat pe pozitia n/4 (din vectorul ordonat) - Timpul de cautare comparativ al elementului aflat pe pozitia n/2 (din vectorul ordonat) - Timpul de cautare comparativ al elementului aflat pe pozitia n (din vectorul ordonat) La selectia operatiei de generare, se va citi numarul de elemente si pentru fiecare element se vor genera 100 de caractere aleator (terminate cu '\0'). Timpul de cautare va fi masurat pentru n=100, n=10000 si n=100000. Pentru masurarea timpului de executie a algoritmilor se va utiliza functia 'QueryPerformanceCounter' ce returneaza valoarea timerului fizic al procesorului - permite realizarea unor masuratori la nivel de microsecunda. Exemplu de utilizare: #include ... LARGE_INTEGER start,stop,frequency; QueryPerformanceCounter(&start); ... // Secventa de cod pentru care se masoara timpul de executie QueryPerformanceCounter(&stop); QueryPerformanceFrequency(&frequency); printf("Timp de executie: %f (ms)\n", 1000*(stop.QuadPart-start.QuadPart)/((float)frequency.QuadPart));