Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Laba2_2;
- uses
- System.SysUtils;
- function GetException(var Number: Integer) : Integer;
- var
- IsCorrect: Boolean;
- begin
- Number := 0;
- repeat
- IsCorrect := True;
- try
- ReadLn(Number);
- except
- WriteLn('Введите натуральное число!');
- IsCorrect := False;
- end;
- until(IsCorrect);
- GetException := Number;
- end;
- function GetFirstFraction : Real;
- var
- IsCorrect: Boolean;
- Numerator, Denominator, NumeratorForFindingDivisors, DenominatorForFindingDivisors: Integer;
- Fraction: Real;
- begin
- Numerator := 0;
- Denominator := 0;
- repeat
- IsCorrect := True;
- WriteLn('Введите числитель первой дроби');
- Numerator := GetException(Numerator);
- NumeratorForFindingDivisors := Numerator;
- WriteLn('Введите знаменатель первой дроби');
- Denominator := GetException(Denominator);
- DenominatorForFindingDivisors := Denominator;
- if Denominator = 0 then
- begin
- WriteLn('Введите знаменатель, не равный 0!');
- IsCorrect := False;
- end
- else if Numerator =0 then
- begin
- WriteLn('Введите числитель, не равный 0!');
- IsCorrect := False;
- end
- else
- begin
- while (DenominatorForFindingDivisors <> 0) do
- begin
- if NumeratorForFindingDivisors > DenominatorForFindingDivisors then
- NumeratorForFindingDivisors := NumeratorForFindingDivisors - DenominatorForFindingDivisors
- else
- DenominatorForFindingDivisors := DenominatorForFindingDivisors - NumeratorForFindingDivisors;
- end;
- if NumeratorForFindingDivisors > 1 then
- begin
- WriteLn('Дробь должна быть несократимой! Попробуйте ещё.');
- IsCorrect := False;
- end;
- end;
- until (IsCorrect);
- Fraction := Numerator / Denominator;
- GetFirstFraction := Fraction;
- end;
- function GetSecondFraction : Real;
- var
- IsCorrect: Boolean;
- Numerator, Denominator, NumeratorForFindingDivisors, DenominatorForFindingDivisors: Integer;
- Fraction: Real;
- begin
- Numerator := 0;
- Denominator := 0;
- repeat
- IsCorrect := True;
- WriteLn('Введите числитель второй дроби');
- Numerator := GetException(Numerator);
- NumeratorForFindingDivisors := Numerator;
- WriteLn('Введите знаменатель второй дроби');
- Denominator := GetException(Denominator);
- DenominatorForFindingDivisors := Denominator;
- if Denominator = 0 then
- begin
- WriteLn('Введите знаменатель, не равный 0!');
- IsCorrect := False;
- end
- else if Numerator =0 then
- begin
- WriteLn('Введите числитель, не равный 0!');
- IsCorrect := False;
- end
- else
- begin
- while (DenominatorForFindingDivisors <> 0) do
- begin
- if NumeratorForFindingDivisors > DenominatorForFindingDivisors then
- NumeratorForFindingDivisors := NumeratorForFindingDivisors - DenominatorForFindingDivisors
- else
- DenominatorForFindingDivisors := DenominatorForFindingDivisors - NumeratorForFindingDivisors;
- end;
- if NumeratorForFindingDivisors > 1 then
- begin
- WriteLn('Дробь должна быть несократимой! Попробуйте ещё.');
- IsCorrect := False;
- end;
- end;
- until (IsCorrect);
- Fraction := Numerator / Denominator;
- GetSecondFraction := Fraction;
- end;
- procedure GetSumOfFractions(var FirstFraction: Real; var SecondFraction: Real);
- var
- Sum: Real;
- Text: String;
- begin
- Sum := FirstFraction + SecondFraction;
- Str(Sum:0:5, Text);
- WriteLn('Сумма двух дробей:' + ' ' + text);
- end;
- var
- FirstFraction, SecondFraction: Real;
- begin
- WriteLn('Программа считает сумму двух обыкновенных несократимых дробей');
- FirstFraction := GetFirstFraction;
- SecondFraction := GetSecondFraction;
- GetSumOfFractions(FirstFraction, SecondFraction);
- ReadLn;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement