Регистрация
Войти
Стать экспертом Правила
Информатика

составьте программу складывающую 2 обыкновенные дроби

ОТВЕТЫ



type
  fraction=class
 
  private
 
  class function GCD(a,b:BigInteger):BigInteger;
  begin
    while b<>0 do (a,b):=(b,a mod b);
    Result:=a
    end;
 
  public
 
  numerator:BigInteger;
  denominator:BigInteger;
 
  constructor Create(num:BigInteger:=0; denom:BigInteger:=1);
    begin
    var n:=GCD(num,denom);
    numerator:=num div n;
    denominator:=denom div n
    end;
 
  class function operator +(a,b:fraction):fraction;
    begin
    var n:=GCD(a.denominator,b.denominator);
    Result:=new fraction(a.numerator*(b.denominator div n)+
        b.numerator*(a.denominator div n),a.denominator div n*b.denominator);
    end;
  end;
    
  function Print(Self:fraction; s:string:=' '):fraction; extensionmethod;
  begin
    Result:=Self;
    if Self.denominator=1 then Write(Self.numerator,s)
    else Write(Self.numerator,'/',Self.denominator,s)
  end;
 
  function Read:fraction;
  begin
    var s:=ReadlnString('Введите через пробел числитель и знаменатель:');
    var w:=s.ToWords;
    Result:=new fraction(BigInteger.Parse(w[0]),BigInteger.Parse(w[1]))
  end;
 
begin
  var a:=Read;
  var b:=Read;
  (a+b).Print
end.


Введите через пробел числитель и знаменатель: 1 2
Введите через пробел числитель и знаменатель: 5 130
7/13

Введите через пробел числитель и знаменатель: 132 65
Введите через пробел числитель и знаменатель: 1325 345
26333/4485

Введите через пробел числитель и знаменатель: 1231234450435679092 234535650234953469825
Введите через пробел числитель и знаменатель: 234346623432456207645 2345893524353652
2617268599782944014855731813763449145529/26199793481726210718128032276692900
266
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам