Podstawy programowania

Transkrypt

Podstawy programowania
Podstawy programowania
Zestaw 1
1. Załóżmy, że dany jest ciąg liczb całkowitych a1 , . . . , an . Podać schemat blokowy i pseudokod realizujący algorytm obliczania sumy wszystkich wyrazów tego ciągu. Dozwolone są
jedynie operacje podstawiania, dodawania i porównywania liczb.
2. Załóżmy, że dany jest ciąg liczb całkowitych a1 , . . . , an . Podać schemat blokowy i pseudokod realizujący algorytm wyszukiwania elementu największego w tym ciągu. Dozwolone
są jedynie operacje dodawania, podstawiania i porównywania liczb.
3. Podać schemat blokowy oraz pseudokod realizujący algorytm sprawdzania parzystości
liczby całkowitej. Dozwolone są jedynie operacje podstawiania, dodawania, odejmowania
i porównywania z liczbami zero lub jeden.
4. Podać schemat blokowy oraz pseudokod realizujący algorytm rozwiązywania równania
kwadratowego o współczynnikach rzeczywistych uwzględniajacy wszystkie przypadki, które
mogą wystąpić. Dozwolone są wszystkie operacje arytmetyczne i oblicznie pierwiastka
kwadratowego oraz operacja podstawiania i porównywania liczb.
5. Załóżmy, że dany jest ciąg liczb całkowitych a1 , . . . , an . Podać schemat blokowy i pseudoP
kod realizujący algorytm wyznaczania największej liczby k takiej, że ki=1 ai nie przekracza
danej liczby K. Dozwolone są jedynie operacje podstawiania, dodawania i porównywania
liczb.
6. Podać schemat blokowy oraz pseudokod realizujący algorytm sprawdzania czy dana liczba
jest pierwsza. Dozwolone są jedynie operacje podstawiania, dodawania, obliczania reszty
(mod), obliczania pierwiastka kwadratowego i porównywania liczb.
7. Podać schemat blokowy oraz pseudokod realizujący algorytm Euklidesa obliczania NWD
dwóch liczb naturalnych. Dozwolone są jedynie operacje podstawiania, mnożenia, dzielenia
całkowitego (div), oblicznia reszty (mod) i porównywania liczb.
8. Podać w psuedokodzie algorytm obliczania wartości wielomianu
w(x) = a0 xn + a1 xn−1 + . . . + an
w punkcie x0 wykorzystując
(a) algorytm „naiwny”
(b) algorytm Hornera

s
= a0
si = si−1 x0 + ai
0
, dla i = 1, . . . , n
Wówczas w(x0 ) = sn .
9. Podać pseudokod algorytmu znajdowania d = N W D(a, b) dwóch liczb naturalnych zapisanego w postaci listy kroków
1
• Jeśli obie liczby a i b są parzyste, to przyjmujemy d = 2d0 , gdzie d0 = N W D( a2 , 2b )
• Jeśli liczba a jest nieparzysta i b jest parzysta (lub na odwrót), to przyjmujemy
d = d0 , gdzie d0 = N W D(a, 2b )
• Jeśli obie liczby a i b są nieparzyste i różne (np. a > b), to przyjmujemy d = d0 , gdzie
d0 = N W D(a − b, b)
• Jeśli a = b, to przyjmujemy d = a i kończymy algorytm
10. Wykonać schemat blokowy oraz napisać pseudokod dla wyznaczania n-tej liczby Fibonacciego



F 0 = 0
F1 = 1



Fn = Fn−1 + Fn−2 , dla n > 1
11. Poniżej przedstawiono algorytm w postaci pseudokodu. Zapisać go w postaci schematu
blokowego.
Algorytm 1: Potęgowanie metodą iterowanego podnoszenia do kwadratu (wersja RightLeft)
Wejście: b ∈ R, n ∈ N ∪ {0}
Wyjście: bn
x = 1;
z = b;
i = n;
while i > 0 do
if i mod 2 = 1 then
x = x ∗ z;
z = z ∗ z;
i = b 2i c;
Pisz x;
12. Algorytm z poniższego schematu blokowego zapisać w postaci pseudokodu lub listy kroków.
Dane: A – tablica posortowana, v – poszukiwany element, l, r – zakres w jakim poszukujemy
Wynik: indeks poszukiwanego elementu, w przypadku nie znalezienia elementu zwracamy
−1
2
3

Podobne dokumenty