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
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
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.