Найти корни квадратного уравнения - 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.

Объяснение кода листинга программы

  1. В коде используется объектно-ориентированный подход, где используются классы tlinur и tkvur.
  2. Класс tlinur представляет линейное уравнение и содержит следующие переменные: a0, a1, k, x1. Методы класса: init, linur, print.
  3. Класс tkvur представляет квадратное уравнение и наследует методы из класса tlinur. Кроме того, содержит дополнительные переменные: a2, x2, и методы: init, kvur, print2.
  4. В начале программы происходит инициализация переменных a, b, c с помощью метода readln().
  5. Затем вызывается метод init класса tkvur для инициализации коэффициентов a2, a0 и a1.
  6. Далее вызывается метод kvur, который решает квадратное уравнение и вычисляет значения корней x1 и x2. Если уравнение не имеет решений, то выводится сообщение решений нет.
  7. После этого вызывается метод print2, который выводит на экран значения корней и их количество.
  8. В конце программы происходит очистка экрана с помощью метода clrscr().
  9. Код использует цикл while для чтения ввода пользователя до тех пор, пока он не введет некорректные значения коэффициентов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы