Zadania przygotowawcze do egzaminu
- 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;
}
- 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;
}
-
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:
- tworzenie figur,
- zmianę rozmiarów i kształtów figur (np. zmianę promienia koła lub długości boku prostokąta),
- przesuwanie,
- sprawdzanie czy jedna z figur zawiera się w drugiej.
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.