Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Laba2_2;
- Uses
- Windows, System.SysUtils;
- Function NOD(A, B: Integer): Integer;
- Begin
- If B = 0 Then
- Result := A
- Else
- Result := NOD(B, A Mod B);
- End;
- Function InputAndCheck1: Integer;
- Var
- IsCorrect: Boolean;
- Num: Integer;
- Begin
- Repeat
- IsCorrect := True;
- Try
- Readln(Num);
- Except
- Writeln('Ошибка. Введите целое число:');
- IsCorrect := False;
- End;
- Until IsCorrect;
- InputAndCheck1 := Num;
- End;
- Function InputAndCheck2(Num: Integer): Integer;
- Var
- IsCorrect: Boolean;
- Denom: Integer;
- Begin
- Repeat
- IsCorrect := True;
- Denom := InputAndCheck1;
- If Denom = 0 Then
- Begin
- Writeln('Ошибка. Делить на ноль нельзя. Повторите ввод знаменателя:');
- IsCorrect := False;
- End
- Else If Abs(Num) > Abs(Denom) Then
- Begin
- Writeln('Ошибка. Числитель должен быть меньше знаменателя по модулю, дробь обыкновенная. Повторите ввод знаменателя:');
- IsCorrect := False;
- End
- Else If (NOD(Abs(Num), Abs(Denom)) <> 1) Or
- ((Num < 0) And (Denom < 0)) Then
- Begin
- Writeln('Ошибка. Дробь должна быть несократимой. Повторите ввод знаменателя:');
- IsCorrect := False;
- End;
- Until IsCorrect;
- InputAndCheck2 := Denom;
- End;
- Procedure SubtractionAndPrint(M, N, P, Q: Integer);
- Var
- NewNumerator, NewDenominator, X: Integer;
- Begin
- NewNumerator := M * Q - P * N;
- NewDenominator := N * Q;
- X := NOD(Abs(NewNumerator), Abs(NewDenominator));
- NewNumerator := NewNumerator Div X;
- NewDenominator := NewDenominator Div X;
- If NewNumerator Mod NewDenominator = 0 Then
- Writeln('Результат вычитания дробей: ', #13#10, M, '/', N, ' - ', P,
- '/', Q, ' = ', (NewNumerator Div NewDenominator))
- Else
- Writeln('Результат вычитания дробей: ', #13#10, M, '/', N, ' - ', P,
- '/', Q, ' = ', NewNumerator, '/', NewDenominator);
- End;
- Var
- M, N, P, Q: Integer;
- Begin
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- Writeln('Эта программа выполняет вычитание 2-х обыкновенных несократимых дробей M/N и P/Q:');
- Writeln('Введите М: ');
- M := InputAndCheck1;
- Writeln('Введите N: ');
- N := InputAndCheck2(M);
- Writeln('Введите P: ');
- P := InputAndCheck1;
- Writeln('Введите Q: ');
- Q := InputAndCheck2(P);
- SubtractionAndPrint(M, N, P, Q);
- Readln
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement