Advertisement
ryabov

2_2 delphi

Oct 13th, 2021
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.58 KB | None | 0 0
  1. program Laba2_2;
  2. uses
  3.     System.SysUtils;
  4. function GetException(var Number: Integer) : Integer;
  5. var
  6.     IsCorrect: Boolean;
  7. begin
  8.     Number := 0;
  9.     repeat
  10.         IsCorrect := True;
  11.         try
  12.             ReadLn(Number);
  13.         except
  14.             WriteLn('Введите натуральное число!');
  15.             IsCorrect := False;
  16.         end;
  17.     until(IsCorrect);
  18.     GetException := Number;
  19. end;
  20. function GetFirstFraction : Real;
  21. var
  22.     IsCorrect: Boolean;
  23.     Numerator, Denominator, NumeratorForFindingDivisors, DenominatorForFindingDivisors: Integer;
  24.     Fraction: Real;
  25. begin
  26.     Numerator := 0;
  27.     Denominator := 0;
  28.     repeat
  29.         IsCorrect := True;
  30.         WriteLn('Введите числитель первой дроби');
  31.         Numerator := GetException(Numerator);
  32.         NumeratorForFindingDivisors := Numerator;
  33.         WriteLn('Введите знаменатель первой дроби');
  34.         Denominator := GetException(Denominator);
  35.         DenominatorForFindingDivisors := Denominator;
  36.         if Denominator = 0 then
  37.         begin
  38.             WriteLn('Введите знаменатель, не равный 0!');
  39.             IsCorrect := False;
  40.         end
  41.         else if Numerator =0 then
  42.         begin
  43.             WriteLn('Введите числитель, не равный 0!');
  44.             IsCorrect := False;
  45.         end
  46.         else
  47.         begin
  48.             while (DenominatorForFindingDivisors <> 0) do
  49.             begin
  50.                 if NumeratorForFindingDivisors > DenominatorForFindingDivisors then
  51.                     NumeratorForFindingDivisors := NumeratorForFindingDivisors - DenominatorForFindingDivisors
  52.                 else
  53.                     DenominatorForFindingDivisors := DenominatorForFindingDivisors - NumeratorForFindingDivisors;
  54.             end;
  55.             if NumeratorForFindingDivisors > 1 then
  56.             begin
  57.                 WriteLn('Дробь должна быть несократимой! Попробуйте ещё.');
  58.                 IsCorrect := False;
  59.             end;
  60.         end;
  61.     until (IsCorrect);
  62.     Fraction := Numerator / Denominator;
  63.     GetFirstFraction := Fraction;
  64. end;
  65. function GetSecondFraction : Real;
  66. var
  67.     IsCorrect: Boolean;
  68.     Numerator, Denominator, NumeratorForFindingDivisors, DenominatorForFindingDivisors: Integer;
  69.     Fraction: Real;
  70. begin
  71.     Numerator := 0;
  72.     Denominator := 0;
  73.     repeat
  74.         IsCorrect := True;
  75.         WriteLn('Введите числитель второй дроби');
  76.         Numerator := GetException(Numerator);
  77.         NumeratorForFindingDivisors := Numerator;
  78.         WriteLn('Введите знаменатель второй дроби');
  79.         Denominator := GetException(Denominator);
  80.         DenominatorForFindingDivisors := Denominator;
  81.         if Denominator = 0 then
  82.         begin
  83.             WriteLn('Введите знаменатель, не равный 0!');
  84.             IsCorrect := False;
  85.         end
  86.         else if Numerator =0 then
  87.         begin
  88.             WriteLn('Введите числитель, не равный 0!');
  89.             IsCorrect := False;
  90.         end
  91.         else
  92.         begin
  93.             while (DenominatorForFindingDivisors <> 0) do
  94.             begin
  95.                 if NumeratorForFindingDivisors > DenominatorForFindingDivisors then
  96.                     NumeratorForFindingDivisors := NumeratorForFindingDivisors - DenominatorForFindingDivisors
  97.                 else
  98.                     DenominatorForFindingDivisors := DenominatorForFindingDivisors - NumeratorForFindingDivisors;
  99.             end;
  100.             if NumeratorForFindingDivisors > 1 then
  101.             begin
  102.                 WriteLn('Дробь должна быть несократимой! Попробуйте ещё.');
  103.                 IsCorrect := False;
  104.             end;
  105.         end;
  106.     until (IsCorrect);
  107.     Fraction := Numerator / Denominator;
  108.     GetSecondFraction := Fraction;
  109. end;
  110. procedure GetSumOfFractions(var FirstFraction: Real; var SecondFraction: Real);
  111. var
  112.     Sum: Real;
  113.     Text: String;
  114. begin
  115.     Sum := FirstFraction + SecondFraction;
  116.     Str(Sum:0:5, Text);
  117.     WriteLn('Сумма двух дробей:' + ' ' + text);
  118. end;
  119. var
  120.     FirstFraction, SecondFraction: Real;
  121. begin
  122.     WriteLn('Программа считает сумму двух обыкновенных несократимых дробей');
  123.     FirstFraction := GetFirstFraction;
  124.     SecondFraction := GetSecondFraction;
  125.     GetSumOfFractions(FirstFraction, SecondFraction);
  126.     ReadLn;
  127. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement