Programowanie obiektowe 1

Zadanie 1

Poniższy program ilustruje użycie biblioteki GMP:
#include <iostream>
#include <gmpxx.h>

using namespace std;

int
main()
{
    mpz_class a = 10;
    mpz_class b = 1;
    for(int i = 0; i < 30; i++) {
        b *= a;
    }
    cout << b.get_str() << endl;
    return 0;
}
Uwaga: Kompilatorowi należy dać opcję -lgmp aby dołączyć bibliotekę
GMP, w przeciwnym razie dostaniemy dziwnie wyglądający komunikat
o błędzie łączenia.

Wypróbuj ten program i zmodyfikuj tak by:

Porównaj wynik z obliczeniem wykonanym używając typ int lub long.

Zadanie 2

Wypełnij treść funkcji niżej (zastąp kropki kodem) tak by mając na wejściu tablicę p i liczbę x typu double obliczył wartość wielomianu p[0] + x*p[1] + ... + x^(n-1)*p[n-1].

double eval_p(double p[], int n, double x) {
....
}

Zadanie 3

Napisz funkcję która dla zadanej tablicy liczb całkowitych wyliczy położenie (numer) elementu minimalengo.

Zadanie 4

Wypełnij treść funkcji niżej (zastąp kropki kodem) tak by mając na wejściu dwie tablice t1 i t2 zawierające niemalejące ciągi liczb typu int wypelniła tablicę wynik ciągiem zawierającym elementy z tablic t1 i t2 w porządku niemalejącym

void merge(int t1[], int n1, int t2[], n2, int wynik[]) {
....
}
Wyżej n1 jest liczbą elementów w tablicy t1, n2 jest liczbą elementów w tablicy t2 i zakładamy że w tablicy wynik jest miejsce na n1+n2 elementów.

Zadanie 5

Wypełnij treść funkcji niżej (zastąp kropki kodem) tak by mając na wejściu tablicę t i liczbę a typu int rozdzieliła elementy tablicy t na te które są mniejsze lub równe a i te które są większe niż a. Elementy mniejsze lub równe a mają się znaleźć w początkowej części tablicy wynik, elementy większe w końcowej. Funkcja ma zwracać ilość elementów mniejszych lub równych a.

int split(int t[], int n, int a, int wynik[]) {
....
}
Wyżej n jest liczbą elementów w tablicy t i zakładamy że w tablicy wynik jest miejsce na n elementów.

Zadanie 6

Oblicz dokładnie (jako funkcję n) ilość porównań (tzn. znajdź wzór) w algorytmie sortowania przez wybór:

void sortuj(int ll[], int n)
{
    for(int i = 0; i < n - 1; i++) {
        int mi = i;
        for(int k = i + 1; k < n; k++) {
            if(ll[k] < ll[mi]) {
                mi = k;
            }
        int tmp = ll[i];
        ll[i] = ll[mi];
        ll[mi] = tmp;
    }
}
Sprawdź wynik modyfikując funkcję tak by obliczyć i wypisać ilość porównań.