Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.12.84.150] |
|
Сообщ.
#1
,
|
|
|
Пишу прогу для работы с дробями и столкнулся с такой проблемой:
Как мне найти число,которое делится на знаменатель, при чем так, чтобы число было без остатка? Если не затруднит подскажите пожалуйста. |
Сообщ.
#2
,
|
|
|
а поподробнее?
|
Сообщ.
#3
,
|
|
|
Примерный алгоритм:
.......... if label1.Caption='/' then begin i:=strtoint(a1.text)*strtoint(b2.text); q:=strtoint(a2.text)*strtoint(b1.text); ch.text:=inttostr(i); zn.text:=inttostr(q); end else if label1.Caption='*' then begin i:=strtoint(a1.text)*strtoint(b1.text); q:=strtoint(a2.text)*strtoint(b2.text); ch.text:=inttostr(i); zn.text:=inttostr(q); end else ............. В данном примере фигурирует 2 дроби, деление и умножение понятно, а вот как мне найти наименьший общий знаменатель при сложении\вычетании ? |
Сообщ.
#4
,
|
|
|
Наибольший Общий Делитель находится так:
Цитата function GCD(a,b:integer):integer; var p1,p2,p3:integer; begin if a>b then begin p1:=a;p2:=b end else begin p1:=b;p2:=a end; while p2<>0 do begin p3:=p1 mod p2; p1:=p2; p2:=p3; end; GCD:=p1 end; А наименьший общий знаменатель так: Цитата где a и b - знаменатили дробей. LC:=a*b div GCD(a,b); |