Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project5;
- uses
- System.SysUtils;
- type TIntegerArray = array of Integer;
- TDoubleArray = array of Double;
- function GetCorrrectInt(const Min, Max: Integer): Integer;
- var
- IsCorrect: Boolean;
- Number: Integer;
- begin
- IsCorrect := false;
- repeat
- try
- Readln(Number);
- IsCorrect := (Number < Max) and (Number > Min);
- if (not IsCorrect) then
- Writeln('Variable must be in range [', Min, ',', Max, ']');
- except
- Writeln('Incorrect type');
- end;
- until IsCorrect;
- Result := Number;
- end;
- procedure ArrOut(Msg: String; DoubleArray: TDoubleArray);
- var
- I: Integer;
- begin
- Writeln(Msg);
- for I := (High(DoubleArray)) downto 0 do
- if I = 0 then
- Write(DoubleArray[i] : 6 : 3)
- else
- Write(DoubleArray[i] : 6 : 3, ', ');
- end;
- function Division(Num: Integer): Integer;
- var
- I: Integer;
- begin
- I := 1;
- while (Num div 10 <> 0) do
- begin
- Num := Num mod 10;
- I := I + 1;
- end;
- Result := I;
- end;
- function BitComparison(Num1, Num2: Integer): Boolean;
- var
- IsCorrect: Boolean;
- begin
- if (Division(Num1) <> Division(Num2)) then
- begin
- Writeln('Digit capacity is not equal, try again');
- IsCorrect := false;
- end;
- IsCorrect := true;
- BitComparison := IsCorrect;
- end;
- function ArraySplit(DoubleArray: TIntegerArray; Num: Integer): TIntegerArray;
- var
- I: Integer;
- begin
- for I := 0 to High(DoubleArray) do
- begin
- DoubleArray[i]:= Num mod 10;
- Num := Num div 10;
- end;
- Result := DoubleArray;
- end;
- procedure Main();
- var
- I, FirstNum, SecondNum : Integer;
- ArrOf1: TIntegerArray;
- ArrOf2: TIntegerArray;
- ArrOf3: TDoubleArray;
- IsCorrect: Boolean;
- const
- Max = 9999999;
- Min = 100;
- begin
- Writeln('Enter 2 numbers between 100 and 9999999');
- repeat
- Writeln('Enter the first number');
- FirstNum := GetCorrrectInt(Min, Max);
- Writeln('Enter the second number');
- SecondNum := GetCorrrectInt(Min,Max);
- until BitComparison(FirstNum, SecondNum);
- SetLength(ArrOf1,Division(FirstNum) + 1);
- SetLength(ArrOf2,Division(SecondNum) + 1);
- SetLength(ArrOf3,Division(SecondNum) + 1);
- ArrOf1 := ArraySplit(ArrOf1, FirstNum);
- ArrOf2 := ArraySplit(ArrOf2, SecondNum);
- for I := 0 to (length(ArrOf3) - 1) do
- begin
- ArrOf3[i] := ArrOf1[i] / ArrOf2[i];
- end;
- ArrOut('Final array', ArrOf3);
- Readln;
- end;
- begin
- Main();
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement