Дан одномерный массив найти разность максимального и минимального элементов массива - Free Pascal
Формулировка задачи:
Нужен код для командного приложения на Лазарусе и если возможно комментарии...
Решение задачи: «Дан одномерный массив найти разность максимального и минимального элементов массива»
textual
Листинг программы
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes, SysUtils, CustApp
{ you can add units after this };
type
{ TMyApplication }
TMyApplication = class(TCustomApplication)
protected
procedure DoRun; override;
public
constructor Create(TheOwner: TComponent); override;
destructor Destroy; override;
procedure WriteHelp; virtual;
end;
{ TMyApplication }
procedure TMyApplication.DoRun;
var
ErrorMsg: String;
n,i:integer;
amin,amax:real;
a:array of real;
begin
// quick check parameters
ErrorMsg:=CheckOptions('h','help');
if ErrorMsg<>'' then begin
ShowException(Exception.Create(ErrorMsg));
Terminate;
Exit;
end;
// parse parameters
if HasOption('h','help') then begin
WriteHelp;
Terminate;
Exit;
end;
{ add your program here }
write('n=');
readln(n);
SetLength(a,n); {устанавливаем размерность массива}
randomize;
writeln('MaccuB:');
for i:=0 to n-1 do begin
a[i]:=random*100; {заполняем массив случайными числами от 0 до 100}
writeln(a[i]:0:4);
if i=0 then begin amin:=a[0];amax:=a[0];end {если первый элемент массива то максимальное и минимальное число признаем равным ему}
else begin
if amin>a[i] then amin:=a[i];{если минимальное больше текущего присваиваем значение минимальному}
if amax<a[i] then amax:=a[i];{если максимальное больше текущего присваиваем значение максимальному}
end;
end;
writeln('MuH=',amin:0:4);
writeln('Makc=',amax:0:4);
writeln('ux pa3HocTb=',amax-amin:0:4);
readln;
// stop program loop
Terminate;
end;
constructor TMyApplication.Create(TheOwner: TComponent);
begin
inherited Create(TheOwner);
StopOnException:=True;
end;
destructor TMyApplication.Destroy;
begin
inherited Destroy;
end;
procedure TMyApplication.WriteHelp;
begin
{ add your help code here }
writeln('Usage: ',ExeName,' -h');
end;
var
Application: TMyApplication;
begin
Application:=TMyApplication.Create(nil);
Application.Title:='My Application';
Application.Run;
Application.Free;
end.
Объяснение кода листинга программы
В этом коде написана программа на языке Free Pascal, которая решает задачу поиска разности максимального и минимального элементов в одномерном массиве. Список действий, которые выполняются в коде:
- Создается новый экземпляр приложения TMyApplication.
- Задаются начальные значения переменных:
- n - количество элементов в массиве;
- i - счётчик элементов массива;
- amin, amax - переменные для хранения минимального и максимального значений массива соответственно;
- a - массив для хранения чисел;
- Проверяются параметры командной строки.
- Заполняется массив a случайными числами от 0 до 100.
- Находится минимальное и максимальное значение массива.
- Выводится на экран содержимое массива.
- Выводятся на экран минимальное и максимальное значение массива.
- Вычисляется разность максимального и минимального значения массива.
- Программа ожидает ввода с клавиатуры, чтобы пользователь мог увидеть результат.
- Программа завершается. Список переменных:
- n - количество элементов в массиве;
- i - счётчик элементов массива;
- amin, amax - переменные для хранения минимального и максимального значений массива соответственно;
- a - массив для хранения чисел;
- ErrorMsg - строка для хранения сообщения об ошибке;
- ExeName - строка, содержащая имя исполняемого файла программы.