Дан целочисленный массив из 30 элементов. элементы массива могут принимать целые значения от 0 до 10 000 включительно. опишите на одном из языков программирования алгоритм, который находит самую большую сумму двух соседних элементов и заменяет на эту сумму все элементы, кратные 3. гарантируется, что в массиве есть хотя бы один элемент, кратный 3. в качестве результата необходимо вывести измененный массив в обратном порядке, каждый элемент массива выводится с новой строчки. например, для массива из восьми элементов: 1 2 6 3 2 7 3 4 программа должна вывести (по одному числу в строке) числа: 4 10 7 2 10 10 2 1 язык паскаль
begin
var a := ArrRandom(30, 0, 10000); // сформировали массив
a.Println; // вывели его элементы, если не надо, уберите строку
var smax := a.Pairwise.Select(t -> t[0] + t[1]).Max; // макс. сумма в парах
a.Reverse.Select(t -> t mod 3 = 0 ? smax : t).Printlines // все остальное
end.
{PascalABC}
Program Begenjov1997;
const
n = 30; {Количество элементов массива}
m = 10000; {Максимально возможное значение элемента}
var
a:array[1..n] of integer;
i, sum: integer;
s:string;
begin
s:=' -=Alphaeus=- ';
for i:=1 to 22 do begin write(s[i]); sleep(60) end;
{заполняем массив случайными числами}
writeln; randomize;
for i:=1 to n do
begin
a[i]:=random(m+1);
end;
{Ищем максимальную сумму двух соседних элементов}
sum:=a[1]+a[2];
for i:=2 to n-1 do
if (a[i]+a[i+1]>sum) then sum:=a[i]+a[i+1];
{Заменяем элементы, кратные 3, наденной суммой}
for i:=1 to n do
if (a[i] mod 3 = 0) then a[i]:=sum;
{Вывод}
writeln('Массив А в обратном порядке:');
for i:=0 to n-1 do writeln(a[n-i],' ');
writeln();
writeln('Максимальная сумма двух соседних элементов равна ',sum);
end.