Помощь - Поиск - Пользователи - Календарь
Полная версия: запись дроби)) Help
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Катюха
народ! help! )))) как перевести дробь из десятичной в правильную и чтоб была несократимой (чтобы числитель и знаменатель были простыми натуральными числами) smile.gif
Altair
я не старался.... и время 3.49 .... я еще не спал smile.gif
const
eps=0.000001;
var
r:real;
z,d,ch,m:integer;
dt:real;
i,nod:integer;

function max(a,b:integer):integer;
begin
if 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 do begin dt := dt * 10; m := m * 10; end;
d := trunc( dt );
ch := m*z+d;
{ñîêðàùàåì}
for i := 1 to max(ch,m) do if (ch mod i=0) and (m mod i=0) then nod:=i;
ch:=ch div nod; m:=m div nod;
writeln(ch,'/',m);
end.

Romtek
Пример из FAQ Исходников: Математика, Работа с числами:
Приближённое представление числа в виде дроби
VAR p,q,qmax:integer;
d, r, min: real;
BEGIN
write('r, qmax=');
readln(r, qmax); { r - не целое число, qmax - кол-во итераций (циклов) }
p:=0; q:=1; min:=r;
REPEAT
IF p / q < r
THEN inc(p)
ELSE inc(q);
d:=abs(r-p/q);
IF d < min THEN
BEGIN
min:=d;
writeln(p:7,'/',q)
END
UNTIL (q >= qmax) OR (d = 0);
readln;
END.


А вообще:
чтобы дробь была несократимой .нужно поделить числитель и знаменатель на НОД (GCD):
{ Евклид (Euclidus) }
function GCD (A: integer; B: integer): integer;
begin
while (a <> 0) and (b <> 0) do
if a >= b then
a := a mod b
else
b := b mod a;
GCD := a + b; { один - ноль }
end;
Катюха
спасибки всем откликнувшимся))))))

Добавлено:
народ, ещё один глупый вопрос: как сохранить результаты решения в файл?))))
Romtek
writeln (F, 'Результат: ', result);

Банально, да? smile.gif
klem4
Я думаю, если вознимкют подобные вопросы, то одной строчкой не обойтись :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
Катюха
народ, всем спасибки!!! smile.gif Помогли очень smile.gif
plaquenil side effects mayo clin
Cialis En Espanol
a healthcare professional is rev
Cialis Rezeptpflichtig Osterreich
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.