РУҚА
24

Решение: Исправление программы неравенства

ЕГЭ · Информатика · Задание 24 · Основы программирования
ПовышеннаяФИПИ3DA124Развёрнутое решение≈ 5 минутРазбор в 5 шагов
Условие

Требовалось написать программу, которая решает неравенство $ax+b>0$ относительно $x$ для любых действительных чисел $a$ и $b$, введённых с клавиатуры. Программист написал программу неправильно.

В программах на Паскале, Бейсике и Си при $a=0$ проверяется знак $b$, а при $a\ne0$ выводится решение $x>-b/a$.

Последовательно выполните три задания:
1) Приведите пример таких чисел $a$, $b$, $x$, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. Можно указать любой способ доработки исходной программы.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Выберем $a=-1$, $b=2$, $x=3$. Исходное неравенство принимает вид $-x+2>0$, то есть $x<2$.

$$-x+2>0\Longleftrightarrow x<2$$
2

Программа при любом $a\ne0$ выводит $x>-b/a$. В выбранном примере она выведет $x>2$, что неверно: при делении на отрицательное число знак неравенства меняется.

$$-\dfrac{b}{a}=-\dfrac{2}{-1}=2$$
3

Лишним является ввод и хранение переменной $x$: программа не проверяет конкретное значение $x$, а выводит общий промежуток решений.

4

Для исправления нужно рассмотреть три случая: $a=0$, $a>0$ и $a<0$. При $a=0$ и $b>0$ подходит любое $x$, при $a=0$ и $b\leq0$ решений нет.

Один из вариантов исправленной программы на Паскале:

$$var\ a,b:\ real;\ begin\ readln(a,b);\ if\ a=0\ then\ if\ b>0\ then\ writeln('любое число')\ else\ writeln('нет решений')\ else\ if\ a>0\ then\ writeln('x>',-b/a)\ else\ writeln('x<',-b/a);\ end.$$
Ответ

Например, $a=-1$, $b=2$, $x=3$: программа ошибочно выводит $x>2$, хотя правильное решение — $x<2$. Лишними являются переменная $x$ и её ввод. Нужно добавить проверку знака $a$: при $a>0$ выводить $x>-b/a$, при $a<0$ — $x<-b/a$; случай $a=0$ обработать отдельно.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Не меняют знак неравенства при $a<0$.

Считают, что при $a=0$ и $b=0$ подходит любое число.

Называют лишним вывод решения вместо ввода переменной $x$.

Закрепить приёмВ теме «Основы программирования» ещё 159 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 24 ЕГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Основы программирования»: в ней 160 задач, и у каждой есть такой же разбор. Регистрация не нужна.