Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Project3;
- Uses
- Windows, System.SysUtils;
- Var
- Numerator1, Denominator1, Numerator2, Denominator2, NumeratorEnd,
- DenominatorEnd, Temp: Integer;
- IsCorrect: Boolean;
- Begin
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- Writeln('Эта программа предназначена для того, чтобы складывать 2 рациональные дроби.');
- Writeln('Введите числитель и знаменатель первой дроби:');
- Repeat
- IsCorrect := True;
- Try
- Write('Числитель 1: ');
- Readln(Numerator1);
- Except
- IsCorrect := False;
- Writeln('Ошибка. Введите целые числа: ');
- End;
- If IsCorrect And (Numerator1 = 0) Then
- Begin
- IsCorrect := False;
- Writeln('Введите верные данные!');
- End;
- Until IsCorrect;
- Repeat
- IsCorrect := True;
- Try
- Write('Знаменатель 1: ');
- Readln(Denominator1);
- Except
- IsCorrect := False;
- Writeln('Ошибка. Введите целые числа: ');
- End;
- If IsCorrect And (Denominator1 = 0) Then
- Begin
- IsCorrect := False;
- Writeln('Введите верные данные!');
- End;
- Until IsCorrect;
- Writeln('Введите числитель и знаменатель второй дроби:');
- Repeat
- IsCorrect := True;
- Try
- Write('Числитель 2: ');
- Readln(Numerator2);
- Except
- IsCorrect := False;
- Writeln('Ошибка. Введите целые числа: ');
- End;
- If IsCorrect And (Numerator2 = 0) Then
- Begin
- IsCorrect := False;
- Writeln('Введите верные данные!');
- End;
- Until IsCorrect;
- Repeat
- IsCorrect := True;
- Try
- Write('Знаменатель 2: ');
- Readln(Denominator2);
- Except
- IsCorrect := False;
- Writeln('Ошибка. Введите целые числа: ');
- End;
- If IsCorrect And (Denominator2 = 0) Then
- Begin
- IsCorrect := False;
- Writeln('Введите верные данные!');
- End;
- Until IsCorrect;
- Writeln('Дробь 1: ', Numerator1, '/', Denominator1);
- Writeln('Дробь 2: ', Numerator2, '/', Denominator2);
- DenominatorEnd := Denominator1 * Denominator2;
- NumeratorEnd := Numerator1 * Denominator2 + Numerator2 * Denominator1;
- If (NumeratorEnd > DenominatorEnd) Then
- Temp := DenominatorEnd
- Else
- Temp := NumeratorEnd;
- While (Temp > 0) Do
- Begin
- If (DenominatorEnd mod Temp = 0) And (NumeratorEnd mod Temp = 0) Then
- Begin
- DenominatorEnd := DenominatorEnd div Temp;
- NumeratorEnd := NumeratorEnd div Temp;
- End;
- Dec(Temp);
- End;
- Write('Искомая дробь: ', NumeratorEnd);
- Writeln('/', DenominatorEnd);
- Readln;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement