IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> запись дроби)) Help, перевод из десятичной в правильную
Катюха
сообщение 12.07.2005 21:31
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


народ! help! )))) как перевести дробь из десятичной в правильную и чтоб была несократимой (чтобы числитель и знаменатель были простыми натуральными числами) smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 13.07.2005 2:49
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


я не старался.... и время 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.



Сообщение отредактировано: Oleg_Z - 13.07.2005 5:46


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 13.07.2005 11:21
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


Пример из 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;


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Катюха
сообщение 13.07.2005 14:40
Сообщение #4





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


спасибки всем откликнувшимся))))))

Добавлено:
народ, ещё один глупый вопрос: как сохранить результаты решения в файл?))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Romtek
сообщение 13.07.2005 14:49
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


writeln (F, 'Результат: ', result);

Банально, да? smile.gif


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 13.07.2005 17:45
Сообщение #6


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Я думаю, если вознимкют подобные вопросы, то одной строчкой не обойтись :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


Сообщение отредактировано: volvo - 13.07.2005 17:49


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Катюха
сообщение 15.07.2005 23:03
Сообщение #7





Группа: Пользователи
Сообщений: 3
Пол: Женский

Репутация: -  0  +


народ, всем спасибки!!! smile.gif Помогли очень smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 19:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"