Advertisement
Egor_Vakar

lab2.2(delphi)

Oct 4th, 2021 (edited)
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.62 KB | None | 0 0
  1. program lab2_2;
  2. {$APPTYPE CONSOLE}
  3. {$R *.res}
  4. uses
  5.     System.SysUtils;
  6. type
  7.     Arr = array of Integer;
  8.  
  9. Function TakeCoefficientValue: Integer;
  10. var
  11.     IsCorrect: Boolean;
  12.     Number: Integer;
  13. begin
  14.     Write('Enter k value: ');
  15.     Number := 0;
  16.     repeat
  17.         IsCorrect := True;
  18.         try
  19.             Readln(Number);
  20.         except
  21.             Write('Incorrect input!!!' + #13#10 + 'Enter k value: ');
  22.             IsCorrect := False;
  23.         end;
  24.         if (IsCorrect and (Number < 1)) then
  25.         begin
  26.             Write('The number must be more than 0', #13#10, 'Enter k value: ');
  27.             IsCorrect := False;
  28.         end;
  29.     until IsCorrect;
  30.     TakeCoefficientValue := Number;
  31. end;
  32.  
  33. Function FindNumberOfAnswers(Coefficient: Integer): Integer;
  34. const
  35.     MAX = 1000000;
  36. var
  37.     i, Current, FigureTotal, Counter: Integer;
  38. begin
  39.     Counter := 0;
  40.     for i := 1 to MAX do
  41.     begin
  42.         Current := i;
  43.         FigureTotal := 0;
  44.         while Current > 0  do
  45.         begin
  46.             FigureTotal := FigureTotal + Current mod 10;
  47.             Current := Current div 10;
  48.         end;
  49.         if i = FigureTotal * Coefficient then
  50.             Counter := Counter + 1;
  51.     end;
  52.     FindNumberOfAnswers := Counter;
  53. end;
  54.  
  55. Function FindAnswers(Coefficient: Integer; NumberOfAnswers: Integer): Arr;
  56. const
  57.     MAX = 1000000;
  58. var
  59.     i, Counter, Current, FigureTotal: Integer;
  60.     Answers: Arr;
  61. begin
  62.     SetLength(Answers, NumberOfAnswers);
  63.     Counter := 0;
  64.     for i := 1 to max do
  65.     begin
  66.         Current := i;
  67.         FigureTotal := 0;
  68.         while Current > 0  do
  69.         begin
  70.             FigureTotal := FigureTotal + Current mod 10;
  71.             Current := Current div 10;
  72.         end;
  73.         if i = FigureTotal * Coefficient then
  74.         begin
  75.             Answers[Counter] := i;
  76.             Counter := Counter + 1;
  77.         end;
  78.     end;
  79.     FindAnswers := Answers;
  80. end;
  81.  
  82. Procedure Output(Arr: Array of Integer);
  83. var
  84.     i: Integer;
  85. begin
  86.     if (Length(Arr) = 0) then
  87.             Writeln('Answers are not found.')
  88.     else
  89.     begin
  90.             Writeln('Answers are:');
  91.             for i := 0 to (Length(Arr) - 1) do
  92.                 Writeln(Arr[i]);
  93.     end;
  94. end;
  95.  
  96. var
  97.     Coefficient, NumberOfAnswers, i: Integer;
  98.     Answers: Arr;
  99. begin
  100.     Writeln('Welcome to the program that outputs all numbers, which are equal to the sum of their digits multiplied by k');
  101.     Coefficient := TakeCoefficientValue;
  102.     NumberOfAnswers := FindNumberOfAnswers(Coefficient);
  103.     Answers := FindAnswers(Coefficient, NumberOfAnswers);
  104.     Output(Answers);
  105.     readln;
  106. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement