Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM NUM2;
- //Находим наибольший общий делитель
- PROCEDURE NOD(A, B: INTEGER; VAR Ans: INTEGER);
- BEGIN
- IF (A < B)
- THEN
- Ans := A + 1
- ELSE
- Ans := B + 1;
- REPEAT
- Ans := Ans - 1
- UNTIL
- (A MOD Ans = 0) AND (B MOD Ans = 0)
- END;
- CONST
- Max = 1000000;
- VAR
- A, B, C, K, ErrA, ErrB: INTEGER;
- A1, B1: STRING;
- BEGIN
- READLN(A1);
- READLN(B1);
- Val(A1, A, ErrA);
- Val(B1, B, ErrB);
- //Исключаем все ошибки
- IF (ErrA <> 0) OR (ErrB <> 0) OR (B = 0) OR (A > Max) OR (B > Max) OR (A < 0) OR (B < 0)
- THEN
- BEGIN
- WRITE('ERROR');
- EXIT;
- END;
- //Числитель равен 0
- IF (A = 0)
- THEN
- BEGIN
- WRITE('0');
- EXIT;
- END;
- //Обработка ситуации A=B
- IF (A = B)
- THEN
- BEGIN
- WRITE('1');
- EXIT;
- END;
- //сокращаем числа А и В
- NOD(A, B, K);
- A := A DIV K;
- B := B DIV K;
- //Выделение целой части
- IF A > B
- THEN
- IF A MOD B = 0
- THEN
- WRITE(A DIV B)
- ELSE
- BEGIN
- C := A DIV B;
- A := A - B * C;
- WRITE(C, ' ',A,' / ',B);
- END
- ELSE
- WRITE(A, ' / ', B);
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement