Wyszukiwanie największego elementu
Transkrypt
Wyszukiwanie największego elementu
Wyszukiwanie największego elementu Użytkownik wprowadza liczbę naturalną n oraz n-elementową tablicę liczb rzeczywistych A. Podaj algorytm znajdowania wartości największego elementu w tablicy A. (Np.: po wprowadzeniu poniższych danych (liczba 5 oznacza rozmiar tablicy): 5 : 12 3 19 10 7 program powinien wypisać liczbę: 19). Specyfikacja algorytmu: Dane wejściowe: liczba naturalna n tablica liczb rzeczywistych A posiadająca n elementów Dane wyjściowe: liczba rzeczywista – największy element tablicy A a) Przedstaw ten algorytm w formie opisu kolejnych kroków. b) Zaprezentuj ten algorytm w formie schematu blokowego. c) Napisz program realizujący ten algorytm w wybranym przez siebie języku programowania (Pascal, C lub C++). Oto przykład działania takiego programu: Podaj n: 5 Podaj elementy tablicy: Największy element = 19 12 3 19 10 7 Przykładowe rozwiązanie Potrzebne będą nam dwie zmienne pomocnicze: i oraz max. Liczba naturalna i oznaczać będzie numer kolejnego elementu tablicy A, natomiast liczba rzeczywista max będzie przechowywać wartość największego znalezionego do tej pory elementu tablicy. Potrzebne jest również uściślenie sposobu numeracji elementów tablicy: od 1 do n (jak w języku Pascal/Delphi) albo od 0 do n – 1 (jak w językach C/C++, Java, Javascript itp.). Obydwa sposoby są równie popularne, wybierzemy jednak sposób pierwszy. Działanie algorytmu opiera się na następującej zasadzie. Najpierw zmiennej max przypisujemy wartość pierwszego elementu tablicy czyli A[1]. Następnie przeglądamy kolejno pozostałe elementy tablicy – jeśli dany element okaże się większy od max, wtedy zmienna max otrzymuje jego wartość. W rezultacie po zakończeniu przeszukiwania tablicy zmienna max ma wartość taką samą, jak największy element tablicy. Zmienne pomocnicze: Notacja: liczba naturalna i – numer kolejnego elementu tablicy A liczba rzeczywista max – największy znaleziony do tej pory element tablicy elementy tablicy są numerowane od 1 do n Opis kolejnych kroków – pkt a) Krok 1: Wczytaj liczbę n oraz elementy tablicy A[1], ..., A[n]. Krok 2: Zmiennej max przypisz wartość A[1]. Zmiennej i przypisz wartość 2. Krok 3: Jeśli i jest większe od n, wtedy wypisz wartość zmiennej max i zakończ działanie algorytmu. Krok 4: Jeśli A[i] jest większe od max, wtedy zmiennej max przypisz wartość A[i]. Krok 5: Powiększ o 1 wartość zmiennej i, po czym przejdź do kroku 3. Schemat blokowy – pkt b) Wczytaj n, A[1], ..., A[n] Start max ← A[1] i←2 NIE NIE A[i] > max ? i>n ? TAK TAK Wypisz max max ← A[i] Stop i←i+1 Program w języku Pascal – pkt c) program NajwiekszyElement; { Znajdowanie największego elementu w tablicy } const ROZMIAR = 1000; var A: array [1..ROZMIAR] of real; max: real; n, i: integer; begin write('Podaj n: '); readln(n); write('Podaj elementy tablicy: '); for i:=1 to n do read(A[i]); max := A[1]; for i:=2 to n do if A[i]>max then max := A[i]; writeln('Największy element = ',max) end. Uwaga: Stała ROZMIAR określa maksymalną liczbę elementów tablicy. Program w języku C++ – pkt c) // Znajdowanie największego elementu w tablicy #include <iostream> #define ROZMIAR 1000 main() { int n; double A[ROZMIAR], max; cout << "Podaj n: "; cin >> n; cout << "Podaj elementy tablicy: "; for(int i=0; i<n; i++) cin >> A[i]; max = A[0]; for(int i=1; i<n; i++) if(A[i]>max) max = A[i]; cout << "Największy element = " << max; } Uwaga: Stała ROZMIAR określa maksymalną liczbę elementów tablicy. W języku C++ elementy tablicy są numerowane od zera, stąd nieznaczna modyfikacja algorytmu.