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.