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

Ответы на вопрос

PascalABC.NET 3.4.2, сборка 1837 от 11.10.2018
Внимание! Если программа не работает, обновите версию!
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.



Далее приведен алгоритм на языке Паскаль, который выполняет указанные действия:
pascalprogram MaxSumAndReplace; const MAX_SIZE = 30; var arr: array[1..MAX_SIZE] of Integer; i, maxSum, n: Integer; // Функция для нахождения максимальной суммы двух соседних элементов function FindMaxSum(a, b: Integer): Integer; begin if a > b then Result := a else Result := b; end; begin // Ввод элементов массива writeln('Введите 30 элементов массива:'); for i := 1 to MAX_SIZE do readln(arr[i]); // Находим максимальную сумму соседних элементов maxSum := 0; for i := 1 to MAX_SIZE - 1 do begin n := FindMaxSum(arr[i], arr[i + 1]); if n > maxSum then maxSum := n; end; // Заменяем элементы, кратные 3, на максимальную сумму for i := 1 to MAX_SIZE do begin if arr[i] mod 3 = 0 then arr[i] := maxSum; end; // Выводим измененный массив в обратном порядке writeln('Измененный массив:'); for i := MAX_SIZE downto 1 do writeln(arr[i]); end.
Вы можете скопировать этот код в среду программирования для Паскаля и выполнить его, чтобы увидеть результат на вашем массиве. Программа сначала вводит 30 элементов массива, затем находит максимальную сумму двух соседних элементов и заменяет элементы, кратные 3, на эту максимальную сумму. Наконец, программа выводит измененный массив в обратном порядке, каждый элемент на новой строке.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili