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