Zadania przygotowawcze do egzaminu

  1. Poniższe funkcje obliczają iloczyn dwóch liczb dodatnich. Podać ich złożoność (w zależności od wielkości tych liczb).

    int iloczyn1(int a, int b) {
       int s=0;
       while(b) {
          s+=a;
          b--;
       }
       return s;
    }

    int iloczyn2(int a, int b) {
       return a*b;
    }


  2. Poniższe funkcje obliczają największą różnicę pomiędzy elementami tablicy t o rozmiarze n. Podać ich złożoność (w zależności od n).

    int rozpietosc1(int* t, int n) {
       int m=0;
       for(int i=0; i<n; i++)
          for(int j=0; j<n; j++) {
             int r=t[i]-t[j];
             if (r<0) r=-r;
             if (r>m) m=r;
          }
       return m;
    }

    int rozpietosc2(int* t, int n) {
          int min=t[0];
       for(int i=1; i<n; i++)
          if (t[i]<min) min=t[i];
       int max=t[0];
       for(int i=1; i<n; i++)
          if (t[i]>max) max=t[i];
       return max-min;
    }


  3. Zaproponować hierarchię klas do obsługi figur na płaszczyźnie. Powinny być udostępnione (co najmniej) następujące figury: punkty, odcinki, koła, prostokąty i trójkąty oraz operacje umożliwiające: Rozwiązanie powinno zawierać deklaracje klas wraz z metodami publicznymi (dostępnymi dla użytkownika), natomiast nie jest wymagana specyfikacja metod (pól) prywatnych oraz implementacja metod.