Назаров588
?>

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

Информатика

Ответы

versalmoda2971
Var  a, b, c, d, Num, Denom, Divis: Integer;  
Function gcd(a, b: Integer): Integer;
Var Temp: Integer;
Begin
  While b > 0 Do
  Begin
    Temp := b;
    b := a mod b;
    a := Temp
  End;
  gcd := a;
End;
Begin
  WriteLn('Введите числа A, B, C, D: ');
  Read(a, b, c, d);
  Num := a * d;
  Denom := b * c;
  Divis := gcd(Num, Denom);
  WriteLn(Num div Divis, '/', Denom div Divis);
End.
Kushchenko-Monashev
Function NOD(x,y:integer):integer;
begin
while (x<>0)and(y<>0) do
 if x>y then x:=x mod y else y:=y mod x;
NOD:=x+y;
end;
var a,b,c,d,n,z1,z2:integer;
begin
writeln('1-я дробь (числитель и знаменатель):');
readln(a,b);
writeln('2-я дробь (числитель и знаменатель):');
readln(c,d);
n:=nod(a*d,b*c);
z1:=a*d div n; 
z2:=b*c div n;
writeln(z1,'/',z2);
end.

Пример:
1-я дробь (числитель и знаменатель):
5 6
2-я дробь (числитель и знаменатель):
2 8
10/3
Борисов
Первая программа предназначена ТОЛЬКО для Pascal.ABC, в другой среде она работать не будет. Она самая короткая и простая. Метод Split разбивает исходную строку на слова по символу пробела и формирует динамический массив. Что бы мы ни вводили, мы всегда будем получать в результате то, что требовалось. (понятно, что если слов будет меньше трех, будем получать то, что ввели).

var
  s: string;
  ms: array of string;

begin
  Write('Введите три слова через пробел: ');
  Readln(s);
  ms := s.Split(' ');
  Writeln(ms[0] + ' ' + ms[2] + ' ' + ms[1])
end.

Вторая программа реализуется в любой версии Pascal. Её недостаток в том, что она правильно работает только тогда, когда введена фраза из трех слов, разделенных пробелом. Это простейший линейный алгоритм.

var
  s, s1, s2, s3: string;
  n, p: integer;

begin
  Write('Введите три слова через пробел: ');
  Readln(s);
  n := Length(s);
  p := Pos(' ', s);
  s1 := Copy(s, 1, p - 1);
  s3 := Copy(s, p + 1, n - p);
  p := Pos(' ', s3);
  s2 := Copy(s3, 1, p - 1);
  n := Length(s3);
  s3 := Copy(s3, p + 1, n - p);
  Writeln(s1 + ' ' + s3 + ' ' + s2)
end.

Третья программа также реализуема в любой версии Pascal и содержит "классический" работы со строкой, состоящий в последовательном анализе каждого символа. Имеет защиту на случай, если слов будет больше или меньше трех.

var
  s: string;
  ms: array[1..3] of string;
  i, n, p, j: integer;

begin
  Write('Введите три слова через пробел: ');
  Readln(s);
  {
  Алгоритм: Просматриваем все символы строки начиная с позиции p
  и при обнаружении пробела в позиции q заносим в массив очередное слово,
  копируя q-p символов, начиная с p. Затем заносим в p значение q+1
  и продолжаем просмотр. При старте принимаем p=1
  }
  p := 1; j := 0; n := Length(s);
  for i := 1 to n do
    if s[i] = ' ' then
    begin
      j := j + 1;
      if j <= 3 then begin{ если введено больше двух пробелов }
        ms[j] := Copy(s, p, i - p);
        p := i + 1
      end
    end;
  if j < 3 then ms[3] := Copy(s, p, n - p + 1);
  Writeln(ms[1] + ' ' + ms[3] + ' ' + ms[2])
end.

Все три программы опробованы и результаты их работы одинаковы:

Введите три слова через пробел: Зебра полосатая лошадь
Зебра лошадь полосатая
Vika-simonenko
1. Развития схемотехники и открытия полупровниковых элементов позволило отказаться от радио ламп и построить компактные вычислительные блоки на базе транзисторов. Скорость вычисления достигается за счет быстрого срабатывания затворов транзисторов что ускоряет переключение ключей в логических схемах.
2. Потому что ученые и маркетологи США поняли что нужно как можно больше людей привлекать в мир пк за счет упрощения программ, делая их более интуитивными и умными. Так стали появляться Текстовые,Табличный, графические редакторы и так далее

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

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

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

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

gallows-warlike-0z
Tatyana-Sergeevna108
punctvydachi
Svetlana1884
diana-020
byfetvostochniy
Дружинин
Сергей_Комарова899
informalla
spz03
stolle16
andreevaalisa
agrilandrussia
Вершинина1161
Викторовна