Составить программку на Паскале: Решение кубических уравнений по схеме Горнера. Если

Составить программку на Паскале: Решение кубических уравнений по схеме Горнера. Если что прочитайте в вебе. Я над этой программой сижу 2 недели не могу сделать. Прошу помогите. Я так понял за ваше решение дают 99 баллов

Задать свой вопрос
Katjusha Shaljadova
Да мне это нужно для проекта
Тарлецкий Санек
именно по схеме горнера
Shagenkov Pasha
1) Turbo? Free? Lazarus? ABC? Delphi? ABC.NET?
Кирилл Зубчевский
2) Для решения необыкновенно кубического? Либо можно, чтоб программа была и четвёртую, и пятую, и десятую ступень?
Miroslava Kuhoreva
Так я эти вопросы задал, поэтому что он зашёл с утра - ответил на прошлые))
Софья
только кубического
1 ответ
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017
// Внимание! Если программа не работает, обновите версию!

type
  fraction=(integer,integer);

function RatFact(Self:array of integer):sequence of fraction;
    extensionmethod;
//
// На основе метода 78б
// В кн.: Агеев М.И., Алик В.П., Марков Ю.И.
// Библиотека алгоритмов 51б-100б. (Справочное пособие.) Вып.2.
// М.б "Сов. радио", 1976.
//
// Отыскание разумных корней полиномов с целыми коффициентами.
// Употребляется предоженное Дж.Пеком расширение вычисления полинома
// способом Горнера.
// !!! Коэффициенты полинома записываются, начиная со свободного члена !!!
//
begin
  var L:=new Listlt;fractiongt;; // вынужденное: метод время от времени дает дубликаты
  (var a0, var an):=(абс(Self.First),абс(Self.Last));
  for var p:=1 to a0 do begin
    if a0 mod plt;gt;0 then continue;
    for var q:=1 to an do begin
      if an mod qlt;gt;0 then continue;
      var g:=Self.First; (var f, var t):=(g,p);
      foreach var k in Self.Skip(1) do begin
        var r:=k*t; (f,g,t):=(f*q+r,-g*q+r,t*p);
        end;
      if f=0 then L.Add((p,q));
      if g=0 then L.Add((-p,q))
      end
    end;
    Result:=L
end;

function RedFrac(Self:fraction):fraction; extensionmethod;
begin
  (var p,var q):=Self;
  var s:=sign(p*q);
  (p,q):=(абс(p),абс(q));
  (var a,var b):=(p,q);
  while blt;gt;0 do begin a:=a mod b; Swap(a,b) end;
  Result:=(s*p div a,q div a)
end;

function Beautify(Self:sequence of fraction):sequence of string;
    extensionmethod;
begin
  Result:=Self.Select(e-gt;e.RedFrac).Distinct.OrderBy(x-gt;x[0]/x[1]).
    Select(e-gt;e[0]+(e[1]lt;gt;1?'/'+e[1]:''))
end;

begin
  ReadArrInteger(4).RatFact.Beautify.Println
end.

Образцы
1) -36x+3x+14x+3 = 0
 
3 14 3 -36
-1/3 3/4

2) (x-1)(x+2)(x+3/5) = 0;  5x+8x-7x-6 = 0

-6 -7 8 5
-2 -3/5 1
Коля Селефонов
Спасибо большое
Максим
Программка хорошая но там есть оплошности она выводит не так корешки тоесть он мне пишет 1/2 1/4 1/5 где 2 4 5 корешки
Вестениус Милена
1x^3 -11x^2 + 38x -40
Виталий Мартиконис
Вы просто нигде не написали, что коэффициенты необходимо вводить напротив))))
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт