Помогите с программой на Pascal

интернет программирование советы делфи технология

Составьте программу для решения линейного диофантова уравнения
ax+by=c.
Ввод коэффициентов организуйте через текстовый файл input.dat, а все найденные решения – output.dat.
Ответы:
{ нахождение частного решения x0,y0 диофантова уравнения
 ax+by=c
  input a,b,c
  output  x0,y0,res
  a*x0+b*y0=c;  
  общее решение xi,yi получаются по формулам xi=x0+i*b  yi=y0-i*a
   res содержит код завершения
res =0  ok
    1  indeterminate
    2  no solution
    }
procedure diophant(a,b,c:integer; var x0,y0,res:integer);
var
  i,m,n,r,s,d,u,v: integer;
  q:array of integer;
begin
  d:=abs(a);
  s:=d;
  r:=abs(b);
  m:=max(d,r);
  m:=max(m,abs(c));
  m:=5*m+1;
  m:=trunc(2.3*ln(m))+1;
  setlength(q,m+1);
  n:=0;  i:=0;
  while r <> 0 do
  begin
     inc(i);
     n:=i;
     q[i]:=s div r;
     d:=r; r:=s-r*q[i]; s:=d
  end;
  if d = 0 then
  begin
    if c = 0 then res:=1 else res:=2;
     exit
  end;
  if c mod d <> 0 then
  begin
    res:=2; exit
  end;
  a:=a div d;  b:=b div d; c:=c div d;
  if n = 0 then
  begin
    v:=0; u:=1
  end
  else
  begin
    v:=1;  u:=0;
    for i:=n-1 downto 1 do
    begin
      s:=v;  v:=u-v*q[i]; u:=s
    end;
  end;
  x0:=c*u*sign(a);
  y0:=c*v*sign(b);
  c:=x0 div b;
  x0:=x0-c*b;
  y0:=y0+c*a;
  res:=0;
end;


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.