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 ∨ .