Максимальный из отрицательных элементов поменять местами с последним элементом массива

Задача

В одномерном массиве найти максимальный из отрицательных элементов и поменять его местами с последним элементом массива.

Решение

Описание переменных: 

  • N - количество элементов в массиве;
  • a - массив;
  • i - счетчик элементов;
  • j - индекс максимального отрицательного элемента;
  • b - "буферная" переменная для обмена.

Алгоритм решения задачи: 

Присвоить j ноль. Это будет сигналом о том, что отрицательных элементов вообще нет.
Если очередной элемент массива меньше нуля и j = 0, то присвоить его индекс переменной j. Если он отрицательный, а j не равно 0, то если он больше, чем значение под j, переписать j на текущий индекс.
Если значение j не равно нулю, произвести обмен и вывести массив.

Программа на языке Паскаль: 

 

const N = 15;
var
    a: array[1..N] of integer;
    i, j: byte;
    b: integer;
 
begin
    randomize;
    for i:=1 to N do begin
        a[i] := random(100)-50;
        write(a[i],' ');
    end;
    writeln;
    j := 0;
    for i:=1 to N do
        if a[i] < 0 then
            if j = 0 then
                j := i
            else
                if a[i] > a[j] then
                    j := i;
    if j <> 0 then begin
        b := a[j];
        a[j] := a[N];
        a[N] := b;
        for i:=1 to N do
            write(a[i],' ');
        writeln;
    end
    else
        writeln('Отрицательных элементов нет');
end.

 

Пример выполнения:

-15 45 45 -38 22 39 -8 40 40 -45 -7 -31 -21 -21 -22 
-15 45 45 -38 22 39 -8 40 40 -45 -22 -31 -21 -21 -7

 

Тема

Одномерные массивы

Уровень

Комбинированные задачи

Добавить комментарий