Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2009, 15:29   #1
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
Вопрос Упрощение дроби

Мне нужно сделать упрощение дроби. Вот как я поступил:
Код:
procedure TForm2.CommonMultiplier(var N1, N2: Int64);
var I, Times: integer;
begin
  Times := GetTickCount;
  I := 2;
  while (N1 > 1) and (N2 > 1) do
    begin
      if (N1 mod I = 0) and (N2 mod I = 0) then
        begin
          N1 := N1 div I;
          N2 := N2 div I;
        end
      else Inc(I);
      if (GetTickCount - Times) > 5000 then exit;
    end;
end;
Все работает, но ждать некоторое время (даже 5 секунд) при вычислении 1/2 + 1/3 очень странно, а ставить меньше - значит на слабых машинах не упростятся сложные дроби.
Может есть у кого варианты, как это лучше организовать?

P.S.: N1 - числитель, N2 - знаменатель, если что...
k1r1ch вне форума Ответить с цитированием
Старый 10.10.2009, 15:45   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Я сделал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,min,a,b:integer;

begin
  a:=strtoint(edit1.Text);
  b:=strtoint(edit2.Text);
  if a>b then min:=a else min:=b;
  for i := 1 to min do
    if (a mod i = 0) and (b mod i = 0) then
    begin
      a:=a div i;
      b:=b div i;
    end;
  edit1.Text:=inttostr(a);
  edit2.Text:=inttostr(b);
end;
Работает быстро
TwiX вне форума Ответить с цитированием
Старый 10.10.2009, 16:16   #3
k1r1ch
ACM!
Форумчанин
 
Аватар для k1r1ch
 
Регистрация: 19.06.2009
Сообщений: 382
По умолчанию

Спасибо! Я чето не допер)
k1r1ch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упрощение работы со строками RNT Общие вопросы C/C++ 4 04.08.2009 13:08
Период дроби! prosport91 Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2009 15:57
сокращение дроби Demonmov Microsoft Office Excel 4 15.04.2009 11:54
Упрощение edit (delphi) grom333 Помощь студентам 1 04.04.2009 13:49
Упрощение кода программы за счет использования процедур uraura Общие вопросы Delphi 10 26.03.2009 21:54