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;
- Var
- Temp: Integer;
- Begin
- While B <> 0 Do
- Begin
- Temp := B;
- B := A Mod B;
- A := Temp;
- End;
- NOD := A;
- End;
- Function InputAndCheckNum: Integer;
- Var
- IsCorrect: Boolean;
- Num: Integer;
- Begin
- Repeat
- IsCorrect := True;
- Try
- Readln(Num);
- Except
- Writeln('Ошибка. Введите целое число:');
- IsCorrect := False;
- End;
- Until IsCorrect;
- InputAndCheckNum := Num;
- End;
- Function InputAndCheckDenom(Num: Integer): Integer;
- Var
- IsCorrect: Boolean;
- Denom: Integer;
- Begin
- Repeat
- IsCorrect := True;
- Denom := InputAndCheckNum;
- If Denom = 0 Then
- Begin
- Writeln('Ошибка. Делить на ноль нельзя. Повторите ввод знаменателя:');
- IsCorrect := False;
- End
- Else
- Begin
- If Abs(Num) > Abs(Denom) Then
- Begin
- Writeln('Ошибка. Числитель должен быть меньше знаменателя по модулю, дробь обыкновенная. Повторите ввод знаменателя:');
- IsCorrect := False;
- End
- Else
- Begin
- If (NOD(Abs(Num), Abs(Denom)) <> 1) Or
- ((Num < 0) And (Denom < 0)) Then
- Begin
- Writeln('Ошибка. Дробь должна быть несократимой. Повторите ввод знаменателя:');
- IsCorrect := False;
- End;
- End;
- End;
- Until IsCorrect;
- InputAndCheckDenom := 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 := InputAndCheckNum;
- Writeln('Введите N: ');
- N := InputAndCheckDenom(M);
- Writeln('Введите P: ');
- P := InputAndCheckNum;
- Writeln('Введите Q: ');
- Q := InputAndCheckDenom(P);
- SubtractionAndPrint(M, N, P, Q);
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement