1 Proste programy na tablicach 2 Doskonalenie umiejętności pracy
Transkrypt
1 Proste programy na tablicach 2 Doskonalenie umiejętności pracy
1 Proste programy na tablicach 1. Napisz program, który wczyta 15 liczb róznych liczb całkowitych do jednowymiarowej tablicy, a nastepnie znajduje najwieksza i najmniejsza z nich, a takze ich pozycje w zbiorze. 2. Napisz program, w którym zadeklarujesz i zainicjujesz dowolnymi wartosciami (inicjacja w momencie deklaracji), dwie tablice liczb (10-15 pozycji), a nastepnie do trzeciej tablicy wpisz odpowiednio: element pierwszy w tablicy 3 – sume pierwszego elementu z tablicy 1 i ostatniego z tablicy 2 element drugi w tablicy 3 – sume drugiego elementu z tablicy 1 i przedostatniego z tablicy 2, itd. 3. Napisz program obliczajacy sumy kolumn, sumy wierszy i sumy obu przekatnych macierzy prostokatnej o ustalonym dowolnym wymiarze (np. 20 x 20). Zawartosc i analizowany zakres macierzy wczytywana ma byc od uzytkownika. Poza wyliczonymi sumami wyswietl równiez sama macierz. 2 Doskonalenie umiejętności pracy z tablicami liczb Ćwiczenie ma na celu zapoznanie studentów z wybranymi metodami sortowania wewnętrznego. Badane w ćwiczeniu metody sortowania to: sortowanie przez proste wstawianie, sortowanie przez proste wybieranie, sortowanie bąbelkowe, sortowanie szybkie (quick sort). Zakładamy, że długość tablicy podlegającej sortowaniu jest znana i wynosi n. Metody sortowania: 2.1 Sortowanie przez proste wstawianie Sortowanie przez proste wstawianie odbywa się w następujący sposób: dla każdego i = 2, 3, ..., n trzeba powtarzać wstawianie a[i] w już uporządkowaną część tablicy a[1] . . . a[i − 1]. W metodzie tej obiekty podzielone są umownie na dwa ciągi: ciąg wynikowy a1 . . . ai−1 oraz ciąg źródłowy ai . . . an . W każdym kroku począwszy od i = 2 i zwiększając i o jeden, i-ty element ciągu źródłowego przenosi się do ciągu wynikowego, wstawiając go w odpowiednim miejscu. Algorytm: 1. Wykonaj co następuje począwszy od indeksu i = 2 do i = n • Wskaż na i-ty element • Wstaw i-ty element w odpowiednim miejscy w a1 ...ai 2.2 Sortowanie przez proste wybieranie Sortowanie przez proste wybieranie polega na wyznaczeniu najmniejszego elementu w ciągu; zamianie go z pierwszym elementem w ciągu, wyznaczeniu najmniejszego elementu w a[2, n] i zamianie go z drugim elementem: wyznaczeniu 1 najmniejszego elementu w a[3, n] i zamianie go z trzecim elementem itd. aż do posortowania całkowitego ciągu. Algorytm: 1. Wykonaj co następuje n − 1 razy (i = 1 do i = n − 1) • Wskaż na najmniejszy element spośród a[i]...a[n]; • Wymień go z ai 2.3 Sortowanie bąbelkowe Sortowanie bąbelkowe polega na przeglądaniu od końca sortowanej tablicy i zamianie miejscami elementów jeśli są one w kolejności odwrotnej tj. pierwszy jest mniejszy od drugiego. Po zakończeniu pierwszego przejścia element najmniejszy powinien się znajdować na odpowiednim dla niego miejscu czyli na początku tablicy. Algorytm: 1. Wykonaj co następuje n − 1 razy (i = n − 1, ..., 1) • Wskaż na ostatni element; • Wykonaj co następuje i razy (a) Porównaj wskazany element z elementem poprzednim (b) Jeśli porównane elementy są w nie właściwej kolejności, zamień je miejscami (c) Wskaż na następny element 2.4 Sortowanie szybkie (Quick Sort) Jest to metoda, w której stosuje się zasadę zamiany. W metodzie sortowania szybkiego korzysta się z faktu, że w celu zapewnienia efektywności powinno się wymieniać obiekty położone daleko od siebie. Załóżmy że dane jest n obiektów ustawionych w odwrotnym porządku kluczy. Można posortować je wykonując tylko n/2 wymian, biorąc najpierw obiekty - skrajny z lewej strony i skrajny z prawej strony, a następnie posuwać się stopniowo do środka z obu stron. Oczywiście takie postępowanie możliwe jest tylko dlatego, że uporządkowanie było dokładnie odwrotne. Wybierzmy losowo jakiś obiekt i nazwijmy go x; przeglądajmy tablicę od lewej strony aż znajdziemy obiekt ai > x, a następnie przeglądajmy tablicę od prawej strony aż znajdziemy aj < x. Wymieńmy teraz te dwa obiekty i kontynuujmy proces przeglądania i zamiany, aż nastąpi spotkanie gdzieś w środku tablicy. W rezultacie otrzymamy tablicę podzieloną na lewą część z kluczami mniejszymi od x oraz prawą część z kluczami większymi od x. Jeżeli na przykład za x wybierzemy środkowy klucz 42, to w tablicy kluczy 44 55 12 42 94 6 18 67 trzeba dokonać dwóch wymian aby otrzymać tablicę podzieloną 2 18 6 12 42 94 55 44 67 Ostatnie wartości indeksów są i = 5 oraz j = 3. Klucze a1 ...ai−1 są mniejsze bądź równe kluczowi x = 42, klucze aj+1 ...an są większe bądź równe temu kluczowi. Wynika stąd, że otrzymaliśmy podział na dwie części, a mianowicie ak.klucz x.klucz dla k = 1...i − 1 ak.klucz x.klucz dla k = j + 1...n oraz ak.klucz = x.klucz dla k = j + 1...i − 1 Następnie powtarzamy tę operacje dla obu wcześniej utworzonych podciągów. Algorytm założenie: Istnieje ciąg liczb xl , xl+1 , xp , 1. Przyjmij za element podziału element v znajdujący się w pobliżu środka ciągu, i podziel tym elementem dany ciąg. Oznacza to, że v znajdzie się na pozycji elementu xk , dla pewnego k spełniającego l ¬ k ¬ p, i elementy na lewo będą od niego nie większe a elementy na prawo od niego będą nie mniejsze. 2. Zastosuj ten sam algorytm do (l, k − 1, x) 3. Zastosuj ten sam algorytm do (k + 1, p, x) Algorytm ten jest bardzo prosty i efektywny, ponieważ zmienne i, j oraz x mogą być w czasie przeglądania tablicy trzymane w szybkich rejestrach maszyny cyfrowej. 3 Ćwiczenia proponowane przez wykładowcę — przetwarzanie tablic. 1. Roczne przychody. Program ten będzie wczytywał przychody osiągnięte przez podatnika w kolejnych miesiącach roku podatkowego. Scenariusz działania programu: Program wyświetla informację o jego przeznaczeniu. Program wyświetla menu główne (zobacz str. 22 wykładu o instrukcjach), pozwalające na wybór następujących opcji: • • • • Wczytaj — wczytanie dochodów, Wyświetl — wyświetlenie wczytanych dochodów, Średnia i suma — wyznaczenie dochodu średniego i sumarycznego, Minimalny i maksymalny — wyznaczenie dochodu minimalnego i maksymalnego, • Od najmniejszego — wyświetlenie dochodów uporządkowanych rosnąco od najmniejszego do największego, • Nad i pod średnią — wyświetlenie informacji ile dochodów jest większych od średniego i jaka jest ich suma, oraz ile dochodów jest mniejszych od średniego i jaka jest ich suma. 3 • Koniec — powoduje zakończenie programu. Po wybraniu odpowiedniej opcji następuje wyznaczenie odpowiednich wielkości, zgodnie z powyższym opisem. 2. Notowania. Makler nadzoruje dzienne notowania pewnej spółki giełdowej. W ciągu dnia pracy, trwającego 8 godzin, makler spisuje kurs spółki dwukrotnie w ciągu godziny. Należy napisać program, który pozwoli maklerowi ? na podstawie zanotowanych wartości ? na wyznaczenie średniego, minimalnego i maksymalnego kursu obserwowanej spółki. Program powinien posiadać trzy niezależne opcje: wczytywanie wartości akcji, przeglądanie wprowadzonych wartości akcji, wyznaczanie wartości średniej, minimalnej i maksymalnej, oraz opcje pozwalającą na zakończenie jego działania. 4