Informatyka I – Lab 04, r.a. 2011/2012
prow. Sławomir Czarnecki
Zadanie na laboratorium nr. 4
Po utworzeniu nowego projektu, dołącz bibliotekę bibs.h.
n
1. Oblicz sumę częściową (przybliżoną wartość) S =
a = a + a + ... + a
∑
nieskończonego,
n
i
0
1
n
i=0
∞
1
szeregu geometrycznego
2
a = a + a + a + ... = 1+ q + q + ... =
∑
, gdzie q ∈ ℝ, q < 1
i
0
1
2
=
− q
i 0
1
jest ustaloną liczbą rzeczywistą.
• Przyjmij:
q = 0
− .1 i n = 4
oraz
q = 0.9 i n = 200 .
• Sumę częściową S oblicz na trzy sposoby, implementując wszystkie trzy dostępne w n
języku C instrukcje pętli: for(…), while(…), do-while(…).
• Kolejne wyrazy a ( i = 0,1,..., n szeregu obliczaj jako składowe wektora a[ n + ]
1
i
)
typu double o stałym wymiarze n + 1.
• Po przeprowadzeniu obliczeń, wyświetl na ekranie monitora wektor a[ n + ]
1
używając funkcji display(…) z biblioteki bibs.h.
n 1
1 q +
−
• Obliczoną numerycznie wartość S porównaj z wartością analityczną Σ =
n
n
1− q
1
sumy częściowej szeregu oraz z sumą Σ =
tego szeregu obliczając błąd
1− q
ERROR = Σ − S i wyświetlając odpowiedni komunikat na ekranie monitora.
n
• Wartości numeryczne wyświetlaj na ekranie monitora z dokładnością do 12
znaczących cyfr po przecinku wywołując na początku programu metodę
cout.precision(12).
∞
2. Wykorzystując warunek konieczny lim a = 0 zbieżności szeregu a < ∞
i
∑
, oblicz sumę
i
i→∞
i=0
n
częściową S =
a
∑ szeregu geometrycznego z zadania 1, w której liczba n wyznaczona n
i
i=0
będzie z warunku i
∀ ∈[0,1,..., n] a ≥ ε i a
< ε .
i
n 1
+
• Przyjmij: q = 0
− .1 , q = 0.9 ,
1
− 0
ε = 1.0 ⋅10
.
• Sumę częściową S oblicz na dwa sposoby, implementując dwie pętle while(…) i n
do-while(…), obliczając wyrazy a szeregu w sposób rekurencyjny.
i
• Kolejno obliczane wyrazy a szeregu wyświetlaj na ekranie monitora.
i
• Na ekranie monitora wyświetl wartość S oraz oblicz błąd ERROR = Σ − S
n
n
wyświetlając odpowiedni komunikat na ekranie monitora.
3. Podobnie jak w zad. 2, wykorzystując warunek konieczny lim a = 0 zbieżności szeregu i
i→∞
∞
n
a < ∞
∑
, oblicz sumę częściową S =
a
∑ szeregu geometrycznego z zadania 1, w której
i
n
i
i=0
i=0
liczba n wyznaczona będzie z warunku i
∀ ∈[0,1,..., n] a − a ≥ ε i a
− a
< ε .
i 1
+
i
n+2
n 1
+
• Przyjmij: q = 0
− .1 , q = 0.9 ,
1
− 0
ε = 1.0 ⋅10
.
• Sumę częściową S oblicz, implementując tylko pętlę do-while(…) i obliczając n
wyrazy a szeregu w sposób rekurencyjny.
i
• Kolejno obliczane wyrazy a szeregu wyświetlaj na ekranie monitora.
i
• Na ekranie monitora wyświetl wartość S oraz oblicz błąd ERROR = Σ − S
n
n
wyświetlając odpowiedni komunikat na ekranie monitora.
4. Dla dowolnie przyjętej dodatniej wartości zmiennej całkowitej N (np. N = 4 ) wygeneruj losowo w pętli for(…) N liczb całkowitych z przedziału [− N, N ] wywołując funkcję random(-N,N).
• Wyświetlaj na ekranie wartości generowanych liczb oraz zliczaj zera, liczby ujemne parzyste, liczby ujemne nieparzyste, liczby dodatnie parzyste, liczby dodatnie nieparzyste wywołując instrukcję sterującą if(…) else if(…) else if(…) else w pętli for(…).
• Wyświetl na ekranie wartości powyższych liczb.
• Sprawdź czy wygenerowano liczby parzyste wywołując instrukcję sterującą if(…) oraz oblicz i wyświetl ile jest wygenerowanych liczb parzystych.
• Wywołując instrukcję sterującą switch(…) wyświetl na ekranie napisy odpowiednio:
“NORMA IDEALNA” w przypadku kiedy liczb parzystych jest N / 2 ,
“BINGO – GRAJ W TOTO” w przypadku kiedy liczb parzystych jest N lub 0 oraz
“NORMA” w pozostałych przypadkach.
Kod zadania napisz w taki sposób, aby w instrukcjach sterujących if(…) lub else if(…) zaimplementować co najmniej raz operator logiczny & & koniunkcji ∧ oraz operator logiczny || alternatywy ∨ .