Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на одном из языков программирования алгоритм, который находит самую большую сумму двух соседних элементов и заменяет на эту сумму все элементы, кратные 3. Гарантируется, что в массиве есть хотя бы один элемент, кратный 3. В качестве результата необходимо вывести измененный массив в обратном порядке, каждый элемент массива выводится с новой строчки. Например, для массива из восьми элементов:
1 2 6 3 2 7 3 4
программа должна вывести (по одному числу в строке) числа:
4 10 7 2 10 10 2 1
Язык Паскаль
Answers & Comments
{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.