Advertisement
gguuppyy

лаба1н3

Sep 16th, 2023 (edited)
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.23 KB | Source Code | 0 0
  1. Program Project3;
  2.  
  3. Uses
  4.     Windows, System.SysUtils;
  5.  
  6. Var
  7.     Numerator1, Denominator1, Numerator2, Denominator2, NumeratorEnd,
  8.       DenominatorEnd, Temp: Integer;
  9.     IsCorrect: Boolean;
  10.  
  11. Begin
  12.     SetConsoleCP(1251);
  13.     SetConsoleOutputCP(1251);
  14.  
  15.     Writeln('Эта программа предназначена для того, чтобы складывать 2 рациональные дроби.');
  16.     Writeln('Введите числитель и знаменатель первой дроби:');
  17.     Repeat
  18.         IsCorrect := True;
  19.         Try
  20.             Write('Числитель 1: ');
  21.             Readln(Numerator1);
  22.         Except
  23.             IsCorrect := False;
  24.             Writeln('Ошибка. Введите целые числа: ');
  25.         End;
  26.         If IsCorrect And (Numerator1 = 0) Then
  27.         Begin
  28.             IsCorrect := False;
  29.             Writeln('Введите верные данные!');
  30.         End;
  31.     Until IsCorrect;
  32.     Repeat
  33.         IsCorrect := True;
  34.         Try
  35.             Write('Знаменатель 1: ');
  36.             Readln(Denominator1);
  37.         Except
  38.             IsCorrect := False;
  39.             Writeln('Ошибка. Введите целые числа: ');
  40.         End;
  41.         If IsCorrect And (Denominator1 = 0) Then
  42.         Begin
  43.             IsCorrect := False;
  44.             Writeln('Введите верные данные!');
  45.         End;
  46.     Until IsCorrect;
  47.  
  48.     Writeln('Введите числитель и знаменатель второй дроби:');
  49.     Repeat
  50.         IsCorrect := True;
  51.         Try
  52.             Write('Числитель 2: ');
  53.             Readln(Numerator2);
  54.         Except
  55.             IsCorrect := False;
  56.             Writeln('Ошибка. Введите целые числа: ');
  57.         End;
  58.         If IsCorrect And (Numerator2 = 0) Then
  59.         Begin
  60.             IsCorrect := False;
  61.             Writeln('Введите верные данные!');
  62.         End;
  63.     Until IsCorrect;
  64.     Repeat
  65.         IsCorrect := True;
  66.         Try
  67.             Write('Знаменатель 2: ');
  68.             Readln(Denominator2);
  69.         Except
  70.             IsCorrect := False;
  71.             Writeln('Ошибка. Введите целые числа: ');
  72.         End;
  73.         If IsCorrect And (Denominator2 = 0) Then
  74.         Begin
  75.             IsCorrect := False;
  76.             Writeln('Введите верные данные!');
  77.         End;
  78.     Until IsCorrect;
  79.  
  80.     Writeln('Дробь 1:  ', Numerator1, '/', Denominator1);
  81.     Writeln('Дробь 2:  ', Numerator2, '/', Denominator2);
  82.  
  83.     DenominatorEnd := Denominator1 * Denominator2;
  84.     NumeratorEnd := Numerator1 * Denominator2 + Numerator2 * Denominator1;
  85.  
  86.     If (NumeratorEnd > DenominatorEnd) Then
  87.         Temp := DenominatorEnd
  88.     Else
  89.         Temp := NumeratorEnd;
  90.  
  91.     While (Temp > 0) Do
  92.     Begin
  93.         If (DenominatorEnd mod Temp = 0) And (NumeratorEnd mod Temp = 0) Then
  94.         Begin
  95.             DenominatorEnd := DenominatorEnd div Temp;
  96.             NumeratorEnd := NumeratorEnd div Temp;
  97.         End;
  98.         Dec(Temp);
  99.     End;
  100.  
  101.     Write('Искомая дробь:  ', NumeratorEnd);
  102.     Writeln('/', DenominatorEnd);
  103.     Readln;
  104.  
  105. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement