не сходится ответ с задачей
var
a: array[1..10000] of integer;
N, i, j, l, m, x, b: integer;
begin
x := -10001;
readln(N);
for i := 1 to N do
readln(a[i]);
for i := 1 to N - 3 do
begin
for j := i + 1 to N - 2 do
for l := j + 1 to N - 1 do
for m := l + 1 to N do
b := a[i] + a[j] + a[l] + a[m];
end;
if (b > x) and (b mod 2 = 0) then begin
x := b;
writeln(x)
end
else writeln('Не найдено');
end.
). На вход программы поступает последовательность из N целых чисел (4 ≤ N ≤ 1000). Необходимо определить из данного ряда 4 числа таких, что их сумма будет четной и максимальной. Если такой суммы не нашлось, то вывести сообщение «Не найдено». Допускается сохранение всей последовательности в массиве с последующим перебором всевозможных вариантов. Описание входных и выходных данных В первой строке входных данных задается количество чисел N. В каждой из последующих N строк записано одно целое число в диапазоне от –100 до 100. В качестве ответа программа должна вывести максимальную четную сумму или сообщение «Не найдено». Пример входных данных: 8
-13 15
-3
-10
Пример выходных данных для приведенного выше примера входных данных:
Мой ответ: Не найдено. Ответ задачи: -2. В чём моя ошибка?
Ответы (1 шт):
Автор решения: Alex R.
→ Ссылка
Всегда форматируйте код. Отделяйте блоки пустыми строками.
Посмотрите код ниже (форматированный и неисправленный), основное условие находится вне цикла и выполняется только для последнего b, а должно для каждого.
var
a: array[1..10000] of integer;
N, i, j, l, m, x, b: integer;
begin
x := -10001;
readln(N);
for i := 1 to N do
readln(a[i]);
for i := 1 to N - 3 do
begin
for j := i + 1 to N - 2 do
for l := j + 1 to N - 1 do
for m := l + 1 to N do
b := a[i] + a[j] + a[l] + a[m];
end;
if (b > x) and (b mod 2 = 0) then
begin
x := b;
writeln(x)
end
else
writeln('Не найдено');
end.
В конце надо проверить что x <> -10001.