Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. program Project5;
  2. uses
  3. System.SysUtils;
  4. type TIntegerArray = array of Integer;
  5. TDoubleArray = array of Double;
  6.  
  7. function GetCorrrectInt(const Min, Max: Integer): Integer;
  8. var
  9. IsCorrect: Boolean;
  10. Number: Integer;
  11. begin
  12. IsCorrect := false;
  13. repeat
  14. try
  15. Readln(Number);
  16. IsCorrect := (Number < Max) and (Number > Min);
  17. if (not IsCorrect) then
  18. Writeln('Variable must be in range [', Min, ',', Max, ']');
  19. except
  20. Writeln('Incorrect type');
  21. end;
  22. until IsCorrect;
  23. Result := Number;
  24. end;
  25.  
  26. procedure ArrOut(Msg: String; DoubleArray: TDoubleArray);
  27. var
  28. I: Integer;
  29. begin
  30. Writeln(Msg);
  31. for I := (High(DoubleArray)) downto 0 do
  32. if I = 0 then
  33. Write(DoubleArray[i] : 6 : 3)
  34. else
  35. Write(DoubleArray[i] : 6 : 3, ', ');
  36. end;
  37.  
  38. function Division(Num: Integer): Integer;
  39.  
  40. var
  41. I: Integer;
  42.  
  43. begin
  44. I := 1;
  45. while (Num div 10 <> 0) do
  46. begin
  47. Num := Num mod 10;
  48. I := I + 1;
  49. end;
  50. Result := I;
  51. end;
  52.  
  53. function BitComparison(Num1, Num2: Integer): Boolean;
  54. var
  55. IsCorrect: Boolean;
  56. begin
  57. if (Division(Num1) <> Division(Num2)) then
  58. begin
  59. Writeln('Digit capacity is not equal, try again');
  60. IsCorrect := false;
  61. end;
  62. IsCorrect := true;
  63. BitComparison := IsCorrect;
  64. end;
  65.  
  66. function ArraySplit(DoubleArray: TIntegerArray; Num: Integer): TIntegerArray;
  67. var
  68. I: Integer;
  69. begin
  70. for I := 0 to High(DoubleArray) do
  71. begin
  72. DoubleArray[i]:= Num mod 10;
  73. Num := Num div 10;
  74. end;
  75. Result := DoubleArray;
  76. end;
  77.  
  78. procedure Main();
  79. var
  80. I, FirstNum, SecondNum : Integer;
  81. ArrOf1: TIntegerArray;
  82. ArrOf2: TIntegerArray;
  83. ArrOf3: TDoubleArray;
  84. IsCorrect: Boolean;
  85. const
  86. Max = 9999999;
  87. Min = 100;
  88.  
  89. begin
  90. Writeln('Enter 2 numbers between 100 and 9999999');
  91. repeat
  92. Writeln('Enter the first number');
  93. FirstNum := GetCorrrectInt(Min, Max);
  94. Writeln('Enter the second number');
  95. SecondNum := GetCorrrectInt(Min,Max);
  96. until BitComparison(FirstNum, SecondNum);
  97. SetLength(ArrOf1,Division(FirstNum) + 1);
  98. SetLength(ArrOf2,Division(SecondNum) + 1);
  99. SetLength(ArrOf3,Division(SecondNum) + 1);
  100. ArrOf1 := ArraySplit(ArrOf1, FirstNum);
  101. ArrOf2 := ArraySplit(ArrOf2, SecondNum);
  102. for I := 0 to (length(ArrOf3) - 1) do
  103. begin
  104. ArrOf3[i] := ArrOf1[i] / ArrOf2[i];
  105. end;
  106. ArrOut('Final array', ArrOf3);
  107. Readln;
  108. end;
  109. begin
  110. Main();
  111. Readln;
  112. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement