Ответы
Ответ:
Готово
Объяснение:
program massiv;
var
i, maxi, mini, n: integer;
max, min: real;
a: array of real;
znak: boolean;
Function isznak(a: array of real): boolean; // Проверка знакопеременности
var i: integer;
b: real;
begin
isznak := true;
b := a[0];
for i := 1 to Length(a) - 1 do
begin
if a[i] = 0 then continue;
if (a[i] / abs(a[i])) <> (b / abs(b)) * (-1) then isznak := false;
b := a[i];
end;
end;
Function minmas(a: array of real; var mini: integer): real; // Минимальный элемент и его индекс
var i: integer;
min: real;
begin
min := a[0];
mini := 0;
for i := 1 to Length(a) - 1 do
if a[i] < min then
begin
min := a[i];
mini := i;
end;
minmas := min;
end;
Function maxmas(a: array of real; var mini: integer): real; // Максимальный элемент и его индекс
var i: integer;
max: real;
begin
max := a[0];
maxi := 0;
for i := 1 to Length(a) - 1 do
if a[i] > max then
begin
max := a[i];
maxi := i;
end;
maxmas := max;
end;
Procedure add(a: array of real; max: real; mini, maxi: integer); // Преобразование массива
var i: integer;
begin
if mini > maxi then Swap(mini, maxi);
for i := mini + 1 to maxi - 1 do
a[i] := a[i] + max;
end;
Function summod(a: array of real): real; // Сумма модулей
var i: integer;
sum: real;
begin
sum := 0;
for i := 0 to Length(a) - 1 do
sum := sum + Abs(a[i]);
summod := sum;
end;
begin // Основной блок
Write('Введите размер массива N: ');
ReadLn(n);
SetLength(a, n);
WriteLn('Введите последовательность чисел:');
for i := 0 to n - 1 do
begin
Write('A[', i, '] = ');
ReadLn(a[i]);
end;
if isznak(a) then
begin
WriteLn('Введенная последовательность является знакопеременной.');
WriteLn('Сумма модулей всех элементов последовательности равна ', summod(a));
end
else
begin
WriteLn('Введенная последовательность не является знакопеременной.');
min := minmas(a, mini);
max := maxmas(a, maxi);
if abs(maxi - mini) > 1 then add(a, max, mini, maxi);
WriteLn('Результат преобразования массива:');
for i := 0 to n - 1 do
Write(a[i], ', ');
WriteLn;
end;
end.