Informatyka - Podstawy Programowania w Języku C++
prow. Sławomir Czarnecki
Zadania na laboratorium nr. 3
1. Zdefiniuj i zainicjalizuj „losowo” 6 zmiennych typu
double
: A
1
, B
1
, C
1
, A
2
, B
2
, C
2
z
przedziału [a , b], gdzie
(
)
,
a
b a b
<
∈ ℝ
. Zmienne te interpretujemy jako współczynniki
definiujące równania dwóch prostych na płaszczyźnie 0XY:
1
1
1
2
2
2
0
0
A x
B y C
A x
B y C
+
+
=
+
+
=
(*)
W celu zainicjalizowania zmiennych A
1
, B
1
, C
1
oraz A
2
, B
2
, C
2
, wywołaj funkcję random(…)
z biblioteki bib.h (sposób dołączenia pliku bib.h oraz wyjaśnienie działania funkcji
random(…) będą omówione na laboratorium).
Wyświetl na ekranie pełną informację o położeniu obu tych prostych względem siebie w
zależności od spełnienia poniższych warunków:
• proste się przecinają dokładnie w jednym punkcie jeśli:
1
1
2
2
0
A
B
A
B
≠
,
• proste się pokrywają (przecinają się w nieskończonej liczbie punktów) jeśli:
1
1
1
1
2
2
2
2
0
A
B
A
C
A
B
A
C
=
=
,
• proste są równoległe (nie mają punktów wspólnych) jeśli:
1
1
2
2
0
A
B
A
B
=
.
2. Zdefiniuj i wczytaj z klawiatury dwie różne liczby naturalne m > 0, n > 0 tak aby m < n.
Oblicz sumę
(
)
(
)
1
...
1
n
i m
i
m
m
n
n
=
= +
+ + +
− +
∑
oraz iloczyn
(
) (
)
1 ...
1
n
i m
i
m m
n
n
=
=
+
−
∏
.
Sprawdź wynik np. dla m = 1, n = 10 :
(
)
10
1
1
55
2
n
i
n n
i
=
=
+
=
=
∑
,
10
1
! 3628800
n
i
i
n
=
=
=
=
∏
.
3. Zdefiniuj i wczytaj z klawiatury pierwszy wyraz
1
a ∈ ℝ , iloraz
1
q ≠ oraz całkowitą liczbę
1
n ≥
wyrazów ciągu geometrycznego
( )
1,2,...
i i
a
=
. Kolejne wyrazy
i
a tego ciągu dla i = 2,3,…
obliczamy według rekurencyjnego lub iteracyjnego wzoru:
1
i
i
a
a
q
−
=
(rekurencja) lub
1
1
i
i
a
a q
−
=
(iteracja). Wyświetl wszystkie wyrazy tego ciągu od 1 do
n na ekranie oraz oblicz
(w pętli) sumę:
1
n
i
i
a
=
∑
. Sprawdź wynik korzystając ze wzoru:
1
1
1
1
n
n
i
i
q
a
a
q
=
−
=
−
∑
(prawdziwego
dla
1
q ≠ ).
4. Znajdź NWD(m , n) – Największy Wspólnik Dzielnik dwóch liczb naturalnych m > 0, n > 0
implementując dwa poniższe algorytmy iteracyjne (algorytmy Euklidesa):
Algorytm iteracyjny I:
• Krok 1. Dopóty dopóki m n
≠ wykonaj następujące podstawienie
jeśli
m > n, to m = m – n
w przeciwnym przypadku:
n = n – m
• Krok 2. NWD = m
Algorytm iteracyjny II:
• Krok 1. Dopóty dopóki n > 0 wykonaj jednocześnie następujące podstawienie
(
)
,
, reszta z dzielenia
m
m n
n
n
=
• Krok 2. NWD = m
Przed implementacją zapoznaj się z dowodem twierdzenia matematycznego uzasadniającego
poprawność pierwszego z powyżej zaproponowanych algorytmów.