Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [FAQ][Pascal|C++] Нахождение максимального/минимального элемента массива


Автор: THandle 17.3.2008, 15:03
Примеры программ на Pascal и С++ находящие максимальный и минимальный элемент массива.
Нахождение максимального элемента реализовано в функции MaxElement. Минимального - в MinElement.


Код

program MaxMin;

const
  MAX = 5;
type
  TArray = array[1..MAX] of integer;

function MaxElement(iArray : TArray) : integer;
var
  i : integer;
  MaxE : integer;
begin
  MaxE := iArray[1];
  for i := 2 to MAX do
    if iArray[i] > MaxE then
      MaxE := iArray[i];
  MaxElement := MaxE;
end;

function MinElement(iArray : TArray) : integer;
var
  i : integer;
  MinE : integer;
begin
  MinE := iArray[1];
  for i := 2 to MAX do
    if iArray[i] < MinE then
      MinE := iArray[i];
  MinElement := MinE;
end;

var
  a : TArray;
  i : integer;
begin
  for i := 1 to MAX do
    begin
      Write('Enter next element: ');
      ReadLn(a[i]);
    end;
  WriteLn(MaxElement(a));
  WriteLn(MinElement(a));
  readln;
end.



Код


#include <iostream>

using std::cout;
using std::cin;
using std::endl;

const size_t MAX = 5;

int MaxElement(int iArray[])
{
    int MaxE = iArray[0];
    for(size_t i = 1; i < MAX; ++i)
    {
        if (iArray[i] > MaxE)
          MaxE = iArray[i];        
    }
    return MaxE;
}


int MinElement(int iArray[])
{
    int MinE = iArray[0];
    for(size_t i = 1; i < MAX; ++i)
    {
        if (iArray[i] < MinE)
          MinE = iArray[i];        
    }
    return MinE;
}


int main()
{
    int a[MAX];
    for(size_t i = 0; i < MAX; ++i)
    {
        cout << "Enter next element: ";
        cin >> a[i];
        }
    cout << "Max: " << MaxElement(a) << endl;
    cout << "Max: " << MinElement(a) << endl;
    char r;
    cin >> r;
}


Автор: Rififi 18.3.2008, 00:11
для C++ все гораздо проще. Вот так:

Код

#include <algorithm>

template <typename T>
T MinElement(T Array[], size_t N)
{
    return *std::min_element(Array, Array + N);
}

template <typename T>
T MaxElement(T Array[], size_t N)
{
    return *std::max_element(Array, Array + N);
}


или даже так:

Код

#include <boost/algorithm/minmax_element.hpp>

int arr[] = {...};
const size_t N = sizeof(arr) / sizeof(arr[0]);
std::pair<int*, int*> minmax = boost::minmax_element(arr, arr+N);



Автор: Rrader 22.3.2008, 20:16
Для VB:
Код

Option Explicit
Option Base 1
Const Max = 5
Dim A(1 To Max) As Long

Function MaxElement(Arr() As Long) As Long
  Dim I, MaxE As Long
  MaxE = Arr(1)
  For I = 2 To Max
    If Arr(I) > MaxE Then MaxE = Arr(I)
  Next I
  MaxElement = MaxE
End Function

Function MinElement(Arr() As Long) As Long
  Dim I, MinE As Long
  MinE = Arr(1)
  For I = 2 To Max
    If Arr(I) < MinE Then MinE = Arr(I)
  Next I
  MinElement = MinE
End Function


'Пример использования - по нажатию кнопки
Private Sub Command1_Click()
  Dim I As Long
  For I = 1 To Max
    A(I) = CLng(InputBox("Введите элемент:"))
  Next I
  'Показываем максимальный и минимальный элементы
  MsgBox ("Максимальный элемент: " & MaxElement(A))
  MsgBox ("Минимальный элемент: " & MinElement(A))
End Sub

Автор: THandle 23.3.2008, 11:04
Вот упрощенный вариант на Паскале, для тех кто еще не знаком с типами, константами, и функциями:

Код

program MaxMin;
var
  a : array [1..5] of integer;
  i : integer;
  MinE : integer;
begin
  for i := 1 to 5 do
    begin
      Write('Enter next element: ');
      ReadLn(a[i]);
    end;
  MinE := a[1];
  for i := 2 to 5 do
    if a[i] < MinE then
      MinE := a[i];
  WriteLn(MinE);
  readln;
end.

Автор: D3v1L0rN 2.6.2009, 22:20
Спасибо! Вот теперь зачет сдам.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)