Cpp/Exam3

Egzamin 2014.04.11 (IIrok inf):

(artykuł w budowie teraz)

1. Dane są dwie tablice typu int t[max]. W każdej z tablic znajdują się niepowtarzające się, uporządkowane rosnąco liczby naturalne. Napisać efektywną funkcję zwracającą liczbę elementów występujących w obu tablicach równocześnie.

odp: mieć na raz 2 indeksy np i oraz j do obu tablic, i w pętli zwiększać i lub j zależnie czy a[i] > a[j] tak aby zawsze pokazywało największy obecnie element, potem porównywać;

ROZWIĄZANIE (nowe) - rafal - http://pastebin.com/m6UhL2U7

dzięki temu wystarczy przejść tablice (obie na raz) tylko jednokrotnie tzn złożoność liniowa O(n)

TODO: kod

2. Dane są następujące definicje: struct osoba { string nazw; string imie; int wiek; bool kobieta; } osoba t[max];

Tablica zawierająca osoby została uporządkowana niemalejąco wg pola wiek. Napisać efektywną funkcję wypisującą imiona wszystkich kobiet w wieku 18-21 lat.

TODO

3. Napisać procedurę sortującą niemalejąco tablicę z zadania 2 według pola nazw metodą prostego wybierania.

TODO

4. Litery swojego nazwiska posortować metodą prostego wstawiania.

TODO

5. Dana jest tablica rozproszona rekord t[max], gdzie record jest typu:

struct record { string klucz; bool zajety; }

Dostępne są funkcja numeryzacji klucza int fn(string klucz) oraz funkcja rozpraszająca int hash(int kn, int np).

a) Napisać funkcję zwracającą wartość true w przypadku gdy rekord o zadanym kluczu występuje w tablicy. b) Napisać funkcję zwracającą liczbę rekordów osiągalnych w pierwszej próbie. c) Napisać funkcję zwracającą średnią liczbę prób potrzebnych dla znalezienia rekordu w tablicy.

TODO

6. Klucz numeryczny jest wyznaczany jako iloczyn liczby samogłosek i liczby spółgłosek w kluczu tekstowym, na przykład dla klucza „Marek”, klucz umeryczny wynosi 2*3 = 6. Dana jest tablica rozproszona o wymiarze N=11, oraz funkcja haszująca h(kn)=kn % N. Proszę umieścić w tej tablicy 7 rekordów, których klucze tekstowe są kolejnymi nazwami dni tygodnia. W przypadku kolizji, rekord kolizyjny umieszczany jest w następnej wolnej działce (metoda liniowa)

TODO