{Составить программу генерации с помощью датчика случайных чисел
и записи в текстовый файл 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.