Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. PROGRAM NUM2;
  2.  
  3. //Находим наибольший общий делитель
  4. PROCEDURE NOD(A, B: INTEGER; VAR Ans: INTEGER);
  5. BEGIN
  6. IF (A < B)
  7. THEN
  8. Ans := A + 1
  9. ELSE
  10. Ans := B + 1;
  11.  
  12. REPEAT
  13. Ans := Ans - 1
  14. UNTIL
  15. (A MOD Ans = 0) AND (B MOD Ans = 0)
  16. END;
  17.  
  18. CONST
  19. Max = 1000000;
  20. VAR
  21. A, B, C, K, ErrA, ErrB: INTEGER;
  22. A1, B1: STRING;
  23. BEGIN
  24. READLN(A1);
  25. READLN(B1);
  26.  
  27. Val(A1, A, ErrA);
  28. Val(B1, B, ErrB);
  29.  
  30. //Исключаем все ошибки
  31. IF (ErrA <> 0) OR (ErrB <> 0) OR (B = 0) OR (A > Max) OR (B > Max) OR (A < 0) OR (B < 0)
  32. THEN
  33. BEGIN
  34. WRITE('ERROR');
  35. EXIT;
  36. END;
  37.  
  38. //Числитель равен 0
  39. IF (A = 0)
  40. THEN
  41. BEGIN
  42. WRITE('0');
  43. EXIT;
  44. END;
  45.  
  46. //Обработка ситуации A=B
  47. IF (A = B)
  48. THEN
  49. BEGIN
  50. WRITE('1');
  51. EXIT;
  52. END;
  53.  
  54. //сокращаем числа А и В
  55. NOD(A, B, K);
  56. A := A DIV K;
  57. B := B DIV K;
  58.  
  59. //Выделение целой части
  60. IF A > B
  61. THEN
  62. IF A MOD B = 0
  63. THEN
  64. WRITE(A DIV B)
  65. ELSE
  66. BEGIN
  67. C := A DIV B;
  68. A := A - B * C;
  69. WRITE(C, ' ',A,' / ',B);
  70. END
  71. ELSE
  72. WRITE(A, ' / ', B);
  73.  
  74. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement