Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.37 KB | None | 0 0
  1. program laba2_2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8.   System.SysUtils;
  9.  
  10. type MyArr = array of Integer;
  11.  
  12. Const
  13.   MaxValue = 9999999;
  14.   MinValue = 100;
  15.   FNum = 'Enter first num';
  16.   SNum = 'Enter second num';
  17.   NotEq = 'Not equal, try again';
  18.   Err = 'Error, try again';
  19.  
  20. function EnterValue(Num: Integer) : Integer;
  21. begin
  22.   try
  23.     Readln(Num);
  24.   except
  25.     Writeln(Err);
  26.     EnterValue := EnterValue(Num);
  27.   end;
  28.   EnterValue := Num;
  29. end;
  30.  
  31. function CheckValue(Max, Min, Num: Integer) : Boolean;
  32. begin
  33.   if (Max < Num) or (Num < Min) then
  34.   begin
  35.     Writeln('Ur value is not belongs[' , Min , ' ; ' , Max , ']');
  36.     CheckValue := False;
  37.   end
  38.   else
  39.     CheckValue := True;
  40. end;
  41.  
  42. function EnterCheckValue(Max, Min, Num: Integer; msg: String) : Integer;
  43. begin
  44.   repeat
  45.     Writeln(msg);
  46.     Num := EnterValue(Num)
  47.   until(CheckValue(Max, Min, Num));
  48.   EnterCheckValue := Num;
  49. end;
  50.  
  51. function CheckCapacity(Num: Integer) : Integer;
  52. var
  53.   i: Integer;
  54. begin
  55.   i := 1;
  56.   repeat
  57.     Num := Num div 10;
  58.     Inc(i);
  59.   until(Num div 10 = 0);
  60.   CheckCapacity := i;
  61. end;
  62.  
  63. function BitComperison(Num1, Num2: Integer) : Boolean;
  64. begin
  65.   if CheckCapacity(Num1) <> CheckCapacity(Num2) then
  66.   begin
  67.     Writeln(NotEq);
  68.     BitComperison := False;
  69.   end
  70.   else
  71.     BitComperison := True;
  72. end;
  73.  
  74. function ArraySplit(Arr: MyArr; Num: Integer): MyArr;
  75. var
  76.   i: Integer;
  77. begin
  78.   for i := 0 to High(Arr) do
  79.   begin
  80.     Arr[i] := Num mod 10;
  81.     Num := Num div 10;
  82.   end;
  83.   ArraySplit := Arr;
  84. end;
  85.  
  86. procedure PrintArray(Msg: String; Arr: array of Integer);
  87. var
  88.   i: Integer;
  89. begin
  90.   Writeln(Msg);
  91.  
  92.   for i := High(Arr) downto 0 do
  93.   begin
  94.     if i <> High(Arr) then
  95.       Write(', ');
  96.     Write(Arr[i]);
  97.   end;
  98. end;
  99.  
  100. var
  101.   FirstNum, SecondNum, i: Integer;
  102.   IsCorrect: Boolean;
  103.   ArrOf1, ArrOf2: MyArr;
  104. begin
  105.   repeat
  106.     FirstNum := EnterCheckValue(MaxValue, MinValue, FirstNum, FNum);
  107.     SecondNum := EnterCheckValue(MaxValue, MinValue, SecondNum, SNum);
  108.     IsCorrect := BitComperison(FirstNum, SecondNum);
  109.   until (IsCorrect);
  110.   SetLength(ArrOf1, CheckCapacity(FirstNum));
  111.   SetLength(ArrOf2, CheckCapacity(SecondNum));
  112.   ArrOf1 := ArraySplit(ArrOf1, FirstNum);
  113.   ArrOf2 := ArraySplit(ArrOf2, SecondNum);
  114.   for i := 0 to High(ArrOf1) do
  115.     ArrOf1[i] := ArrOf1[i] - ArrOf2[i];
  116.   printArray('Final nums', ArrOf1);
  117.   readln;
  118. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement