народ! help! )))) как перевести дробь из десятичной в правильную и чтоб была несократимой (чтобы числитель и знаменатель были простыми натуральными числами)
Altair
13.07.2005 6:49
я не старался.... и время 3.49 .... я еще не спал
const
eps=0.000001;
var
r:real;
z,d,ch,m:integer;
dt:real;
i,nod:integer;
function max(a,b:integer):integer;
beginif a > b then max := a else max := b;
end;
begin
readln( r );
z := trunc( r );
dt := r-z; m := 1;
while abs(dt-trunc(dt)) > eps dobegin dt := dt * 10; m := m * 10; end;
d := trunc( dt );
ch := m*z+d;
{ñîêðàùàåì}for i := 1to max(ch,m) doif (ch mod i=0) and (m mod i=0) then nod:=i;
ch:=ch div nod; m:=m div nod;
writeln(ch,'/',m);
end.
VAR p,q,qmax:integer;
d, r, min: real;
BEGIN
write('r, qmax=');
readln(r, qmax); { r - не целое число, qmax - кол-во итераций (циклов) }
p:=0; q:=1; min:=r;
REPEATIF p / q < r
THEN inc(p)
ELSE inc(q);
d:=abs(r-p/q);
IF d < min THENBEGIN
min:=d;
writeln(p:7,'/',q)
ENDUNTIL (q >= qmax) OR (d = 0);
readln;
END.
А вообще: чтобы дробь была несократимой .нужно поделить числитель и знаменатель на НОД (GCD):
{ Евклид (Euclidus) }function GCD (A: integer; B: integer): integer;
beginwhile (a <> 0) and (b <> 0) doif a >= b then
a := a mod b
else
b := b mod a;
GCD := a + b; { один - ноль }end;
Катюха
13.07.2005 18:40
спасибки всем откликнувшимся))))))
Добавлено: народ, ещё один глупый вопрос: как сохранить результаты решения в файл?))))
Romtek
13.07.2005 18:49
writeln (F, 'Результат: ', result);
Банально, да?
klem4
13.07.2005 21:45
Я думаю, если вознимкют подобные вопросы, то одной строчкой не обойтись :D , Катюха, посмотри вот это : FAQ Файлы ну или вот тебе пример записи :
uses crt;
var
x:integer;
f:Text; // или например file of integer;
Begin
clrscr;
write('x='); readln(x);
assign(f,'c:\Data.txt');
rewrite(f);
write(f,x);
close(f);
readln;
End.
зыы чот форум лагает... третий раз пытаюсь запостить)
Ты постил как раз во время объединения темы... Volvo
Катюха
16.07.2005 3:03
народ, всем спасибки!!! Помогли очень
plaquenil side effects mayo clin
16.09.2021 11:46
Cialis En Espanol
a healthcare professional is rev
18.09.2021 19:17
Cialis Rezeptpflichtig Osterreich
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.