Нужно взять сумму произведений числителей и знаменателей крест накрест, то есть a на d, b на c, и поделить на произведение знаменателей. в форме, чтоб понятнее было: . дальше можно сократить: для удобства запишем получившийся числитель в переменную n, а знаменатель - в m. найдем для этого наибольший общий делитель, и для данного алгоритма запишем значение m в переменную m1, n в n1, чтобы не портить их значения: если n1> m1, поменяем значение переменной n1 на n1-m1, если же m1> n1, то сделаем наоборот - присвоим переменной m значение m1-n1, повторим этот алгоритм до тех пор, пока m1> 0 и n1> 0. после завершения цикла выберем большее число из m и n, и оно будет наиб. общим делителем. теперь вернемся к дроби m/n. поделим m и n на получившийся наибольший общий делитель. выведем получившиеся результаты. m - в качестве числителя, и n - знаменателя. дроби суммированы.
Спасибо
Ответ дал: Гость
1)
var
a: array [1..5,1..10] of integer;
i,j,p: integer;
begin
for i: =1 to 5 do
begin
for j: =1 to 10 do
begin
a[i,j]: =random(50)+1;
write(a[i,j]: 3);
end;
writeln;
end;
writeln('меняем 1 и последнюю строки');
for j: =1 to 10 do
begin
p: =a[1,j];
a[1,j]: =a[5,j];
a[5,j]: =p;
end;
for i: =1 to 5 do
begin
for j: =1 to 10 do
write(a[i,j]: 3);
writeln;
end;
end.
2)
var a: array [1..5, 1..10] of integer; i, j: integer; p: real;
begin for i : = 1 to 5 do begin for j : = 1 to 10 do begin a[i, j] : = random(50) + 1; write(a[i, j]: 3); end; writeln; end; writeln('произведения элементов строк'); for i : = 1 to 5 do begin p : = 1; for j : = 1 to 10 do p : = p * a[i, j]; writeln(p: 25: 0); end; end.
Популярные вопросы