Составить программу генерации с помощью датчика случайных чисел и записи в текстовый файл N математических заданий. Примечание: a,b,c,d,e,f,k,m,l — const x — переменная. Уравнение (ax+b)/(cx+d)+(ex+f)/(kx+m)=L, имеющие хотя бы один целый корень — Pascal(Паскаль)

{Составить программу генерации с помощью датчика случайных чисел
 и записи в текстовый файл N математических заданий.
 Примечание: a,b,c,d,e,f,k,m,l - const
             x - переменная.
 Уравнение (ax+b)/(cx+d)+(ex+f)/(kx+m)=L,
           имеющие хотя бы один целый корень}

program Zadacha;
const R=15;
var FileName:string;
    fa:file;
    a,b,c,d,e,f,k,m,l,x,n,i:longint;
function Fx(a,b,c,d,e,f,k,m,l,x:longint):boolean;
begin
    {write(4,':',x,'@');
   Fx:=((a*x+b)/(c*x+d)+(e*x+f)/(k*x+m)-l)=0;}Fx:=true

end;
function Check(var x:longint;a,b,c,d,e,f,k,m,l:longint):boolean;
var a1,b1,c1,d1,x1,x2:real;
begin
  Check:=False;{write(1);}
  {if (a=0) and b=0*c*d*e*f*k*m=0 then exit;
 {проверка существования целочисленного решения}
  if ((c*x+d)=0) or ((k*x+m)=0) then exit;
  if not((frac((a*x+b)/(c*x+d))=0) and
         (frac((e*x+f)/(k*x+m))=0))
     then exit; {write(2);}
  a1:=a*k+e*c-l*c*k;  if a1=0 then exit;
  b1:=a*m+b*k+e*d+f*c-l*c*m-l*d*k;
  c1:=b*m+f*d-l*d*m;
  d1:=sqr(b1)-4*a1*c1;  if d1<0 then exit;
  d1:=sqrt(d1);
  x1:=(-b1+d1)/(2*a1);
  x2:=(-b1-d1)/(2*a1);
  if frac(x1)=0
    then x:=trunc(x1)
    else exit;
  if frac(x2)=0
    then x:=trunc(x2)
    else exit;
  if (a1*x+b1)*x+c1<>0 then exit;
  Check:=Fx(a,b,c,d,e,f,k,m,l,x) and (x<>0); {write(4,':',x,'@');}
  writeln(5)
end;
begin
  {write('Введите имя файла:');readln(FileName)}
  write('Введите количество заданий:'); readln(n);
 { assign(fa,FileName);
  rewrite(fa);
 } writeln(f,'Решите уравнение в целых числах:');
  for i:=1 to n do
    begin
      repeat
      {генерация чисел}
      a:=Random(R);
      b:=Random(R);
      c:=Random(R);
      d:=Random(R);
      e:=Random(R);
      f:=Random(R);
      k:=Random(R);
      m:=Random(R);
      l:=Random(R);
      {проверка существования целочисленного решения}
      until Check(x,a,b,c,d,e,f,k,m,l);
      writeln({f,}'(',a,'x+',b,')/(',c,'x+',d,')+(',
              e,'x+',f,')/(',k,'x+',m,')=',l,'  (x=',x,')');
    end;
 { close(fa)}
end.

Вариант № 2

{Составить программу генерации с помощью датчика случайных чисел
 и записи в текстовый файл N математических заданий.
 Примечание: a,b,c,d,e,f,k,m,l - const
             x - переменная.
 Уравнение (ax+b)/(cx+d)+(ex+f)/(kx+m)=L,
           имеющие хотя бы один целый корень}

program Zadacha;
const R=15;
var FileName:string;
    fa:file;
    a,b,c,d,e,f,k,m,l,x,n,i:longint;
function Fx(var x:longint;a,b,c,d,e,f,k,m,l:longint):boolean;
begin
   if ((c*x+d)*(k*x+m)<>0 and (c*x+d) and(k*x+m))then
   Fx:=(((a*x+b)/(c*x+d)+(e*x+f)/(k*x+m)-l)=0);

end;
function Check(var x:longint;a,b,c,d,e,f,k,m,l:longint):boolean;
var a1,b1,c1,d1,x1,x2:real;
begin
  Check:=False;
  {if (a=0) and b=0*c*d*e*f*k*m=0 then exit;
 {проверка существования целочисленного решения}
  if ((c*x+d)=0) or ((k*x+m)=0) then exit;
  if not((frac((a*x+b)/(c*x+d))=0) and
         (frac((e*x+f)/(k*x+m))=0))
     then exit;
 a1:=a*k+e*c-l*c*k;  if a1=0 then exit;
  b1:=a*m+b*k+e*d+f*c-l*c*m-l*d*k;
  c1:=b*m+f*d-l*d*m;
  d1:=sqr(b1)-4*a1*c1;  if d1<0 then exit;
  d1:=sqrt(d1);
  x1:=(-b1+d1)/(2*a1);
  x2:=(-b1-d1)/(2*a1);
  if frac(x1)=0
    then x:=trunc(x1)
    else exit;
  if frac(x2)=0
    then x:=trunc(x2)
    else exit;
  if (a1*x+b1)*x+c1<>0 then exit;
  Check:=Fx(a,b,c,d,e,f,k,m,l,x) and (x<>0);

end;
begin
  {write('Введите имя файла:');readln(FileName)}
  write('Введите количество заданий:'); readln(n);
 { assign(fa,FileName);
  rewrite(fa);
 } writeln(f,'Решите уравнение в целых числах:');
  for i:=1 to n do
    begin
      repeat
      {генерация чисел}
      a:=Random(R);
      b:=Random(R);
      c:=Random(R);
      d:=Random(R);
      e:=Random(R);
      f:=Random(R);
      k:=Random(R);
      m:=Random(R);
      l:=Random(R);
      {проверка существования целочисленного решения}
      until Check(x,a,b,c,d,e,f,k,m,l);
      writeln({f,}'(',a,'x+',b,')/(',c,'x+',d,')+(',
              e,'x+',f,')/(',k,'x+',m,')=',l,'  (x=',x,')');
    end;
 { close(fa)}
end.

Вариант № 3

{Составить программу генерации с помощью датчика случайных чисел
 и записи в текстовый файл N математических заданий.
 Примечание: a,b,c,d,e,f,k,m,l - const
             x - переменная.
 Уравнение (ax+b)/(cx+d)+(ex+f)/(kx+m)=L,
           имеющие хотя бы один целый корень}

program Zadacha;
const R=15;
var FileName:string;
    fa:text;
    a,b,c,d,e,f,k,m,l,x,n,i,xx:longint;
    P:boolean;Fx:extended;
begin
  write('Введите имя файла:');readln(FileName);
  write('Введите количество заданий:'); readln(n);
  assign(fa,FileName);
  rewrite(fa);
  writeln(fa,'Решите уравнение в целых числах:');
  for i:=1 to n do
    begin
      repeat
      {генерация чисел}
       repeat
        a:=Random(R); b:=Random(R);  c:=Random(R);
        d:=Random(R); e:=Random(R);  f:=Random(R);
        k:=Random(R); m:=Random(R);  l:=Random(R);
       until (a<>0) and (c<>0) and (e<>0) and (k<>0);
      {проверка существования целочисленного решения}
      xx:=-50;p:=False;
     { writeln(a,':',b,':',c,':',d,':',e,':',f,':',k,':',m,':',l);}
      for x:=-50 to 50 do
       if (c*x+d<>0) and (k*x+m<>0)
        then
        begin
          fx:=(a*x+b)/(c*x+d);
          fx:=fx+(e*x+f)/(k*x+m);
          if (fx-l)=0 then begin xx:=x; p:=True end;
        end
      until p and (xx<>0);
      writeln(a*xx+b,'/',c*xx+d,'+',e*xx+f,'/',k*xx+m,'=',l);
      writeln(fa,'(',a,'x+',b,')/(',c,'x+',d,')+(',
              e,'x+',f,')/(',k,'x+',m,')=',l,'  (x=',xx,')');
    end;
  close(fa)
end.

Leave a Comment

49 + = 54