Даны две дроби найти их сумму . (паскаль), надо!

tamasha1993 tamasha1993    1   11.06.2019 02:30    0

Ответы
немагистор немагистор  09.07.2020 08:08
Var
  n1, d1, n2, d2, m, n, d, nn, dd, nod: integer;
  r: double;

begin
  Writeln('Нахождение суммы двух простых дробей.');
  Write('Введите через пробел числитель и знаменатель первой дроби: ');
  Readln(n1, d1);
  Write('Введите через пробел числитель и знаменатель второй дроби: ');
  Readln(n2, d2);
  {Находим результат, как простую дробь}
  n := n1 * d2 + n2 * d1;
  d := d1 * d2;
  r := n / d;
  {Если дробь неправильная, надо исключить целое число}
  if n > d then begin m := n div d; n := n mod d end
  else if n = d then begin m := 1; n := 0; d := 1 end
  else m := 0;
  {Возможно числитель и знаменатель дроби могут быть частично сокращены}
  if n <> 0 then begin
    {ищем НОД числителя и знаменателя и делим их на него}
    nn := n; dd := d;
    while nn <> dd do
      if nn > dd then nn := nn - dd else dd := dd - nn;
    nod := nn;
    if nod <> 1 then begin n := n div nod; d := d div nod end;
  end;
  Write(n1, '/', d1, ' + ', n2, '/', d2, ' = ');
  if m > 0 then
    if n <> 0 then Writeln(m, ' ', n, '/', d, ' = ', r)
    else Writeln(m)
  else
    Writeln(n, '/', d, ' = ', r)
end.

Тестовые примеры:

Нахождение суммы двух простых дробей.
Введите через пробел числитель и знаменатель первой дроби: 25 5
Введите через пробел числитель и знаменатель второй дроби: 64 256
25/5 + 64/256 = 5 1/4 = 5.25

Нахождение суммы двух простых дробей.
Введите через пробел числитель и знаменатель первой дроби: 8 19
Введите через пробел числитель и знаменатель второй дроби: 154 221
8/19 + 154/221 = 1 495/4199 = 1.11788521076447

Нахождение суммы двух простых дробей.
Введите через пробел числитель и знаменатель первой дроби: 5 7
Введите через пробел числитель и знаменатель второй дроби: 12 42
5/7 + 12/42 = 1

Нахождение суммы двух простых дробей.
Введите через пробел числитель и знаменатель первой дроби: 1 5
Введите через пробел числитель и знаменатель второй дроби: 3 11
1/5 + 3/11 = 26/55 = 0.472727272727273
ПОКАЗАТЬ ОТВЕТЫ
tsudakatyap0bt0w tsudakatyap0bt0w  09.07.2020 08:08
Program DROB;
uses crt;
var
a, b, c, d: integer;
s: real;
   begin
   Write('Введите числитель a1 = ');
   Readln(a);
   Write('Введите знаменатель b1 = ');
   Readln(b);
   Writeln;
   Write('Введите числитель с2 = ');
   Readln(c);
   Write('Введите знаменатель d2 = ');
   Readln(d);
   S:=(a*d+b*c)/(b*d);
   Writeln;
   write('Сумма дробей s = ', s:0:3);
  
   readln;
end.    
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика