Решение: Исправление программы неравенства
Требовалось написать программу, которая решает неравенство $ax+b>0$ относительно $x$ для любых действительных чисел $a$ и $b$, введённых с клавиатуры. Программист написал программу неправильно.
В программах на Паскале, Бейсике и Си при $a=0$ проверяется знак $b$, а при $a\ne0$ выводится решение $x>-b/a$.
Последовательно выполните три задания:
1) Приведите пример таких чисел $a$, $b$, $x$, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. Можно указать любой способ доработки исходной программы.
Решение по шагам
5 шаговВыберем $a=-1$, $b=2$, $x=3$. Исходное неравенство принимает вид $-x+2>0$, то есть $x<2$.
$$-x+2>0\Longleftrightarrow x<2$$Программа при любом $a\ne0$ выводит $x>-b/a$. В выбранном примере она выведет $x>2$, что неверно: при делении на отрицательное число знак неравенства меняется.
$$-\dfrac{b}{a}=-\dfrac{2}{-1}=2$$Лишним является ввод и хранение переменной $x$: программа не проверяет конкретное значение $x$, а выводит общий промежуток решений.
Для исправления нужно рассмотреть три случая: $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$.