Найти корни квадратного уравнения - Turbo Pascal (31549)
Формулировка задачи:
Используя ООП, определить объект КВАДРАТНОЕ УРАВНЕНИЕ. Найти корни квадратного уравнения. Не понимаю как сделать через наследования INHERITED. Помогите .
Решение задачи: «Найти корни квадратного уравнения»
textual
Листинг программы
uses crt; type tlinur=object{линейное уравнение} a0,a1:real;{свободный член и коэффициент при х} k:integer; {количество корней - минус 1, 0, 1} x1:real; {значение корня} procedure init (a,b:real); {инициализация} procedure linur; {решение линейного уравнения} procedure print; {вывод решения на экран} end; tkvur=object(tlinur){квадратное уравнение} a2,x2:real; {коэффициент при квадрате неизвестного и второй корень} procedure init(a,b,c:real); {инициализация} procedure kvur; {решение квадратного уравнения} procedure print2; {вывод решения на экран} end; procedure tlinur.init(a,b:real); begin a1:=a; a0:=b end; procedure tlinur.linur; begin if a1<>0 then begin k:=1; x1:=-a0/a1 end else if a0=0 then k:=-1 else k:=0 end; procedure tlinur.print; begin case k of -1:writeln('любое значение'); 0:writeln('решений нет'); 1: writeln('один корень=',x1:0:2) end end; procedure tkvur.init(a,b,c:real); begin inherited init(a,b); {коэффициент при х и свободный член} a2:=c;{коэффициент при x^2} end; procedure tkvur.kvur; var d:real; begin if a2<>0 then begin d:=(sqr(a1)-4*a2*a0); if d>=0 then begin x1:=(-a1+sqrt(d))/(2*a2); x2:=(-a1-sqrt(d))/(2*a2); k:=2 end else k:=0 end else linur end; procedure tkvur.print2; begin case k of -1..1:print; 2:writeln('два корня x1=',x1:0:2,' x2=',x2:0:2) end end; var u:tkvur; a,b,c:real; begin clrscr; writeln('Введите коэффициенты уравнения a,b,c (a и b одновременно не равны 0)'); readln(a,b,c); u.init(a,b,c); u.kvur; u.print2; readln end.
Объяснение кода листинга программы
- В коде используется объектно-ориентированный подход, где используются классы
tlinur
иtkvur
. - Класс
tlinur
представляет линейное уравнение и содержит следующие переменные:a0
,a1
,k
,x1
. Методы класса:init
,linur
,print
. - Класс
tkvur
представляет квадратное уравнение и наследует методы из классаtlinur
. Кроме того, содержит дополнительные переменные:a2
,x2
, и методы:init
,kvur
,print2
. - В начале программы происходит инициализация переменных
a
,b
,c
с помощью методаreadln()
. - Затем вызывается метод
init
классаtkvur
для инициализации коэффициентовa2
,a0
иa1
. - Далее вызывается метод
kvur
, который решает квадратное уравнение и вычисляет значения корнейx1
иx2
. Если уравнение не имеет решений, то выводится сообщениерешений нет
. - После этого вызывается метод
print2
, который выводит на экран значения корней и их количество. - В конце программы происходит очистка экрана с помощью метода
clrscr()
. - Код использует цикл
while
для чтения ввода пользователя до тех пор, пока он не введет некорректные значения коэффициентов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д