Advertisement
anticlown

laba.2.2.(Delphi)

Dec 22nd, 2022
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.04 KB | None | 0 0
  1. Program Laba_2_2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. Uses
  6.   System.SysUtils;
  7. Const
  8.   MAX_ARRAY_SIZE = 100;
  9. Type
  10.   TArr = Array Of Integer;
  11.  
  12. Procedure OutputTaskInfo();
  13. Begin
  14.   Writeln('Данная программа находит наименьшее натуральное n по следующему правилу: ');
  15.   Writeln('Если последнюю цифру некоторого натурального числа n перенести и ');
  16.   Writeln('поставить перед первой цифрой этого числа, то получится число, в два раза больше
  17.           n.');
  18. End;
  19.  
  20. Function FindMinimalNumber(): TArr;
  21. Const
  22.   FACTOR = 2;
  23. Var
  24.   Number: TArr;
  25.   Count, Addition, CurrentNumber, FlagIsCorrect, I: Integer;
  26. Begin
  27.   Writeln('Производятся вычисления...');
  28.   CurrentNumber := 2;
  29.   Addition := 0;
  30.   Count := 0;
  31.   FlagIsCorrect := 0;
  32.   SetLength(Number, MAX_ARRAY_SIZE);
  33.  
  34.   While FlagIsCorrect < 1 Do
  35.   Begin
  36.     Inc(Count);
  37.     CurrentNumber := CurrentNumber * FACTOR;
  38.     CurrentNumber := CurrentNumber + Addition;
  39.  
  40.     If CurrentNumber < 10 Then
  41.       Addition := 0;
  42.  
  43.     If CurrentNumber > 9 Then
  44.     Begin
  45.       CurrentNumber := CurrentNumber - 10;
  46.       Addition := 1;
  47.     End;
  48.  
  49.     Number[Count] := CurrentNumber;
  50.  
  51.  
  52.     if (CurrentNumber = 2) And (Addition = 0) Then
  53.     Begin
  54.       Inc(FlagIsCorrect);
  55.     End;
  56.  
  57.   End;
  58.  
  59.   FindMinimalNumber := Number;
  60.  
  61. End;
  62.  
  63. Procedure OutputResultInConsole(ResultArr: TArr);
  64. Var
  65.   Count, I, FlagIsCorrect: Integer;
  66. Begin
  67.   Writeln('Наименьшим n является: ');
  68.   I := Length(ResultArr);
  69.   FlagIsCorrect := 0;
  70.  
  71.   While FlagIsCorrect < 1 Do
  72.   Begin
  73.     If ResultArr[I] <> 0 Then
  74.     Begin
  75.       Inc(FlagIsCorrect);
  76.       Count := I;
  77.     End
  78.  
  79.     Else
  80.       Dec(I);
  81.  
  82.   End;
  83.  
  84.   For I := Count DownTo 1 Do
  85.     Write(ResultArr[I]);
  86.  
  87. End;
  88.  
  89. Procedure Main();
  90. Begin
  91.   OutputTaskInfo();
  92.   OutputResultInConsole(FindMinimalNumber());
  93. End;
  94.  
  95. Begin
  96.   Main();
  97.   Readln;
  98. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement