Марина
?>

Даны две дроби a/b и c/d (a, b, c, d - натуральные числа составить программу умножения дроби на дробь. ответ должен быть несократимой дробью. использовать подпрограмму алгоритма евклида для определения нод

Информатика

Ответы

Batrakova-Anna
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

function gcd(a,b:integer):integer; // НОД
begin
  while b<>0 do begin a:=a mod b; Swap(a,b) end;
  Result:=a
end;

procedure RedFrac(var a,b:integer); // сокращение дроби
begin
  var (sgna,sgnb):=(Sign(a),Sign(b)); // мы должны учитывать знак!
  (a,b):=(Abs(a),Abs(b));
  var d:=gcd(a,b);
  a:=(a div d)*sgna; b:=(b div d)*sgnb
end;

begin
  var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
  var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
  (a,b):=(a*c,b*d);
  RedFrac(a,b);
  Writeln('Результат умножения: ',a,' / ',b)
end.

Пример
Введите числитель и знаменатель 1-й дроби: 32 1024
Введите числитель и знаменатель 2-й дроби: 60 300
Результат умножения: 1 / 160

В качестве бонуса - решение на базе входящей в состав PascalABC.NET библиотеки численных методов

uses NumLibABC;

begin
  var (a,b):=ReadInteger2('Введите числитель и знаменатель 1-й дроби:');
  var (c,d):=ReadInteger2('Введите числитель и знаменатель 2-й дроби:');
  Writeln('Результат умножения: ',Frc(a,b)*Frc(c,d))
end.
Староческуль-Станиславовна
// PascalABC.NET 3.0, сборка 1073
const
  nn=30;
  mm=30;
var
  a:array[1..mm,1..nn] of integer;
  m,n,i,j,k,s:integer;
begin
  Writeln('Введите число строк и столбцов массива: '); Read(m,n);
  Randomize;
  Writeln('*** Исходный массив ***');
  k:=0;
  for i:=1 to m do begin
    for j:=1 to n do begin
      a[i,j]:=Random(51)-25;
      Write(a[i,j]:4);
      if Odd(a[i,j]) then Inc(k)
    end;
    Writeln
  end;
  if k>5 then begin
    Writeln('Средние арифметические отрицательных элементов по строкам');
    for i:=1 to m do begin
      s:=0; k:=0;
      for j:=1 to n do
        if a[i,j]<0 then begin Inc(k); s:=s+a[i,j] end;
      if k>0 then Writeln(s/k:9:5) else Writeln('  0.00000');
    end
  end
  else begin
    Writeln('*** Результирующий массив ***');
    for i:=1 to m do begin
      for j:=1 to n do begin a[i,j]:=2*a[i,j]; Write(a[i,j]:4) end;
    Writeln
    end
  end
end.

Тестовые решения:
Введите число строк и столбцов массива:
8 6
*** Исходный массив ***
 -16  -8  -1  24 -22   1
  -9 -20 -25  13 -11  10
 -15  10 -12  20 -22   3
  -6  25  -3  25 -14  22
  24  -4  24  17  -4 -17
 -23  -9 -22   1 -18 -13
 -12  13   6 -16   2 -13
  19   8 -22  14  -3   4
Средние арифметические отрицательных элементов по строкам
-11.75000
-16.25000
-16.33333
 -7.66667
 -8.33333
-17.00000
-13.66667
-12.50000

Введите число строк и столбцов массива:
3 5
*** Исходный массив ***
   3  24 -21 -22  -8
 -21  14 -22   0 -22
  15 -16  -2   6  22
*** Результирующий массив ***
   6  48 -42 -44 -16
 -42  28 -44   0 -44
  30 -32  -4  12  44
lele52
Uses GraphABC; 
procedure Draw(x, y, l, u : Real; t : Integer);

procedure Draw2(Var x, y: Real; l, u : Real; t : Integer);
begin
Draw(x, y, l, u, t);
x := x + l*cos(u);
y := y - l*sin(u);end; 
begin
if t > 0 then
beginl := l/3;Draw2(x, y, l, u, t-1);Draw2(x, y, l, u+pi/3, t-1);
Draw2(x, y, l, u-pi/3, t-1);Draw2(x, y, l, u, t-1);end
else
Line(Round(x), Round(y), Round(x+cos(u)*l), Round(y-sin(u)*l))end;
begin
SetWindowSize(425,500);
SetWindowCaption('Фракталы: Снежинка Коха');
Draw(10, 354, 400, pi/3, 4);Draw(410, 354, 400, pi, 4);
Draw(210, 8, 400, -pi/3, 4);end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Даны две дроби a/b и c/d (a, b, c, d - натуральные числа составить программу умножения дроби на дробь. ответ должен быть несократимой дробью. использовать подпрограмму алгоритма евклида для определения нод
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

ivanda
Lomakina-Valerievna1779
girra
Apresov
makscska22879
Ольга1520
kuharhuks
rykovatv6
ekaterinava90
juliajd
Gor Anatolevich
Татьяна_Вологжин
Выбери верный адрес ячейки. 39 PP E 54
Anna-Miron
Galliardt Sergeevna1284
nagas