Algorytmy Warunki zaliczenia tych zajęć Rozwiązania zadań domowych oznaczonych (*) proszę zapisać do pliku tekstowego Algorytmy.txt i wysłać do mnie jako załącznik. Ostateczny termin: wtorek 14.04, godzina 24:00. Przykład Algorytm szukający liczby największej w tablicy Tab zawierającej iRozmTab liczb całkowitych, dodatkowo algorytm podaje pozycję liczby największej. iMax = Tab[0] iPozMax = 0 iPozAkt = 1 dopóki iPozAkt < iRozmTab wykonuj { jeżeli Tab[iPozAkt] > iMax to { iMax = Tab[iPozAkt] iPozMax = iPozAkt } iPozAkt = iPozAkt + 1 } wypisz iMax, iPozMax Inny zapis powyższego algorytmu: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. iMax = Tab[0] iPozMax = 0 iPozAkt = 1 jeśli iPozAkt > iRozmTab idź do 10 jeśli Tab[iPozAkt] <= iMax idź do 8 iMax = Tab[iPozAkt] iPozMax = iPozAkt iPozAkt = iPozAkt + 1 idź do 4 wypisz iMax, iPpozMax Jak wyglądałby powyższy algorytm w Javie (zakładamy, że tablica Tab zawiera liczby typu int, tzn. całkowite z przedziału [-2 147 483 648,2 147 483 647]): int iMax = tab[0]; int iPozMax = 0; int iPozAkt = 1; while(iPozAkt < iRozmTab) { if(Tab[iPozAkt] > iMax) { iMax = tab[iPozAkt]; iPozMax = iPozAkt; NIF Strona 1 } iPozAkt = iPozAkt + 1; } System.out.println(iMax + ", " + iPozMax); Uwagi: Większość języków programowania (w tym Java) numeruje (indeksuje) wyrazy tablicy zaczynając od zera: wyrazy 100-elementowej tablicy są oznaczane tak: Tab[0],...,Tab[99]. W wielu językach (w tym Java) nawiasy klamrowe służą do wydzielenia bloków, w podanym przykładzie wydzielone są dwa bloki: co ma być powtarzane, co ma być wykonane gdy spełniony jest warunek. Pytania: Jakie będą wartości zmiennych iMax, iPozMax po wykonaniu powyższego algorytmu jeżeli tablica Tab zawiera liczby 1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3,2,1? Czy powyższy algorytm będzie poprawny, jeżeli wiersz jeżeli Tab[iPozAkt] > iMax to zamienimy na jeżeli Tab[iPozAkt] >= iMax to Jakie będą efekty wykonania zmienionego algorytmu na tablicy z poprzedniego pytania? Zadania 1. Napisać algorytm liczący ile jest liczb dodatnich, ujemnych, równych 0, w tablicy Tab zawierającej iRozmTab liczb. Wyniki zapisz w zmiennych iDod, iUjem, iZero. 2. Napisać algorytm obliczania . Wskazówka: Euklides zauważył prosty fakt, iż NWD liczb n i dzieli również ich różnicę. Zatem od większej liczby odejmujemy w pętli mniejszą dotąd, aż obie liczby się zrównają. Wynik to NWD dwóch wyjściowych liczb. 3. Napisać algorytm NWW(n,k) obliczający dla dwóch liczb całkowitych n i k ich najmniejszą wspólną wielokrotność. Wskazówka: . 4. Dana jest tablica napisów Tab o długości iRozmTab. Napisać algorytm wyznaczający długość najdłuższego podciągu jednakowych napisów. (Dla tablicy {"Jan", "Jan", "jan", "Jan", "Ewa", "Ewa", "Ewa", "to", "niedobrana", "para"} odpowiedź powinna wynosić 3.) Pytanie: jaki warunek należy dodać do zadania, aby odpowiedź wynosiła 4? NIF Strona 2 5. Dana jest tablica Tab o długości iRozmTab zawierająca liczby (oceny). Napisać algorytm obliczający średnią ocenę. Każda liczba w tablicy ma wartość 0; 2; 3; 3,5; 4; 4,5 lub 5. Wartość 0 oznacza, że student jeszcze nie zdawał egzaminu i nie należy tej liczby uwzględniać podczas obliczania sredniej. Jeżeli Tab = [3;5;3,5;4;5;0;0;3], to algorytm powinien zwrócić (3 + 5 + 3,5 + 4 + 5 + 3)/6 = 3,92. 6. Napisz algorytm obliczający rozwiązania równania kwadratowego . 7. Dana jest liczba całkowita n ≥ 2, Co robi poniższy algorytm? bZagadka = true k = 2 g = √ dopóki (k < = g) oraz bZagadka wykonuj { jezeli (n%k == 0) { bZagadka = false } k = k+1 } Symbol n%k oznacza resztę z dzielenia n/k. Po zakończeniu wykonywania algorytmu zmienna zagadka ma wartość true lub false. Wyznacz wartość zmiennej bZagadka dla n=2,3,4,5,6,7. Pytania: Dla jakiego typu liczb n zmienna bZagadka ma wartość true, a dla jakiego ma wartość false? Dlaczego w pseudokodzie użyto zmiennej g: g = √ dopóki (k < = g) oraz bZagadka wykonuj zamiast wykonać „prostszy” warunek sprawdzający: dopóki (k < = √ ) oraz bZagadka wykonuj ? Zadania domowe 8. (*) Dane są dwie tablice Tab1 i Tab2 zawierające odpowiednio iRozmTab1 i iRozmTab2 tekstów. Napisać algorytm sprawdzający, czy jakiś napis się powtarza, tzn. czy występuje jednocześnie w tablicy Tab1 i Tab2. 9. (*) Dana jest tablica liczb Tab o długości iRozmTab. Napisać algorytm wyznaczający największą różnicę między liczbami zawartymi w tej tablicy. (Dla tablicy {2,4,6,3,11,8,0,5} odpowiedź powinna wynosić 15.) NIF Strona 3