Advertisement
Vernon_Roche

Задание 2 Delphi (Лабораторная работа 2)

Oct 12th, 2023 (edited)
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.77 KB | None | 0 0
  1. Program Lab2;
  2.  
  3. Uses
  4.   System.SysUtils;
  5.  
  6. Function CountSumNumbers(Number: Integer): Integer;
  7.  
  8. Var
  9.     Sum: Integer;
  10.  
  11. Begin
  12.     Sum := 0;
  13.     While Number <> 0 Do
  14.     Begin
  15.         Sum := Sum + Number mod 10;
  16.         Number := Number div 10;
  17.     End;
  18.     Result := Sum;
  19. End;
  20.  
  21. Function InputK(): Integer;
  22.  
  23. Var
  24.     K: Integer;
  25.     IsCorrect: Boolean;
  26.  
  27. Begin
  28.     Repeat
  29.         Writeln('Введите k в диапазоне [1; 200 000]:');
  30.         IsCorrect := True;
  31.         Try
  32.             Readln(K);
  33.         Except
  34.             Writeln('Ошибка ввода. Введите натуральное число.');
  35.             IsCorrect := False;
  36.         End;
  37.         If IsCorrect And ((k < 1) Or (k > 200000)) Then
  38.         Begin
  39.             Writeln('Ошибка ввода. Введите натуральное число.');
  40.             IsCorrect := False;
  41.         End;
  42.     Until IsCorrect;
  43.     Result := K;
  44. End;
  45.  
  46. Function SearchBorder(K: Integer): Integer;
  47.  
  48. Var
  49.     Pot, I: Integer;
  50.  
  51. Begin
  52.     Pot := 1;
  53.     I := 1;
  54.     For I := 1 To 10 Do
  55.     Begin
  56.         If Pot > 9 * I * K Then
  57.         Begin
  58.             Result := Pot;
  59.             Exit;
  60.         End;
  61.     Pot := Pot * 10;
  62.     End;
  63. End;
  64.  
  65. Procedure PrintAllResultNumbers(K: Integer; Border: Integer);
  66.  
  67. Var
  68.     I: Integer;
  69.  
  70. Begin
  71.     For I := 1 To Border Do
  72.         If I = K * CountSumNumbers(I) Then
  73.             Writeln(i);
  74. End;
  75.  
  76. Var
  77.     K, Border: Integer;
  78.  
  79. Begin
  80.     Writeln('Программа выводит все натуральные числа, которые в k раз больше суммы своих цифр.');
  81.     K := InputK();
  82.     Border := SearchBorder(K);
  83.     Writeln('Искомые числа:');
  84.     PrintAllResultNumbers(K, Border);
  85.     Readln;
  86. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement