Вопрос задан 28.10.2026 в 12:31. Предмет Информатика. Спрашивает Сивцова Виктория.

Что не так с кодом?
var
a, b, max: integer;
begin
writeln('Введите два целых числа');
read(a, b);
if a > 0
max := a;
end;
else
max := b;
end;
writeln('Наибольшее число', max);
end.

Перейти к ответам

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

Отвечает Сафронов Андрей.

В вашем коде на языке Pascal есть несколько синтаксических и логических ошибок. Из-за синтаксических ошибок программа не компилируется, а после их исправления без изменения условия она всё равно будет неправильно находить наибольшее число.

1. Пропущено ключевое слово then

В Pascal условный оператор записывается следующим образом:

pascal
if условие then действие1 else действие2;

У вас написано:

pascal
if a > 0 max := a;

После условия a > 0 необходимо добавить then.

2. Неправильно используются end; и else

В вашем коде:

pascal
if a > 0 max := a; end; else max := b; end;

Здесь сразу несколько ошибок:

  • Перед else не должно быть end;, если вы не открывали блок с помощью begin.

  • Перед else нельзя ставить точку с запятой после max := a.

  • После max := b не нужен отдельный end;, поскольку соответствующий begin отсутствует.

Если после if или else выполняется только один оператор, дополнительные begin и end не требуются.

3. Неправильное логическое условие

Это самая важная логическая ошибка:

pascal
if a > 0 then

Вы проверяете, является ли число a положительным, а не какое из двух чисел больше.

Например, если пользователь введёт:

Обычный текст
5 10

Программа выберет число 5, потому что 5 > 0, хотя наибольшее число — 10.

Правильное условие:

pascal
if a > b then

Теперь программа сравнивает два введённых числа, а не проверяет знак первого числа.

4. Исправленный код

Вот полностью рабочий вариант программы:

pascal
var a, b, max: integer; begin writeln('Введите два целых числа'); readln(a, b); if a > b then max := a else max := b; writeln('Наибольшее число: ', max); end.

5. Как работает исправленная программа?

  1. Объявляются три целочисленные переменные: a, b и max.

  2. С помощью readln(a, b) пользователь вводит два целых числа.

  3. Оператор if a > b then проверяет, больше ли первое число второго.

  4. Если условие истинно, в max записывается значение a.

  5. Если условие ложно, в max записывается значение b.

  6. Команда writeln выводит результат на экран.

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

Обычный текст
Введите два целых числа 15 27 Наибольшее число: 27

Если ввести отрицательные числа, программа тоже будет работать правильно:

Обычный текст
Введите два целых числа -8 -3 Наибольшее число: -3

Если оба числа равны, например 7 и 7, программа выведет 7.

Итог

В исходном коде были четыре основные проблемы: отсутствовало ключевое слово then, неправильно использовались end, стояла лишняя точка с запятой перед else, а условие a > 0 не соответствовало задаче поиска максимального числа.

Главное исправление — заменить условие a > 0 на a > b и правильно оформить конструкцию if ... then ... else.

После этих изменений программа корректно определяет

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос