Advertisement
believe_me

Untitled

Oct 27th, 2021
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.27 KB | None | 0 0
  1. program lab22;
  2.  
  3. uses SysUtils;
  4.  
  5. Function InputNumber(): Integer;
  6.  
  7. const
  8.     MAX_NUMBER = 1000000000;
  9.     MIN_NUMBER = 1;
  10.  
  11. var
  12.     IsCorrect: Boolean;
  13.     Number: Integer;
  14.  
  15. begin
  16.     Writeln('Введите натуральное число не большее, чем ', MAX_NUMBER);
  17.     repeat
  18.         IsCorrect := true;
  19.         try
  20.             Readln(Number);
  21.         except
  22.             Writeln('Оно должно быть целым числом, которое не больше, чем ',
  23.               MAX_NUMBER);
  24.             IsCorrect := false;
  25.         end;
  26.         if IsCorrect and ((Number < MIN_NUMBER) or (Number > MAX_NUMBER)) then
  27.         begin
  28.             Writeln('Число должно являться положительным и быть не больше, чем ',
  29.               MAX_NUMBER);
  30.             IsCorrect := false;
  31.         end;
  32.     until IsCorrect;
  33.     InputNumber := Number;
  34. end;
  35.  
  36. Function SearchMaxCountOfRepeats(Number: Integer): Integer;
  37.  
  38. var
  39.     MaxCountOfRepeats, Counter, Previous, SingleNumber, NewNumber: Integer;
  40.  
  41. begin
  42.     MaxCountOfRepeats := 0;
  43.     while (Number > 0) do
  44.     begin
  45.         Counter := 1;
  46.         SingleNumber := Number mod 10;
  47.         Previous := SingleNumber;
  48.         Number := Number div 10;
  49.         NewNumber := Number;
  50.         while (NewNumber > 0) do
  51.         begin;
  52.             SingleNumber := NewNumber mod 10;
  53.             NewNumber := NewNumber div 10;
  54.  
  55.             begin
  56.                 if (Previous = SingleNumber) then
  57.                     Inc(Counter);
  58.                 if (Counter > MaxCountOfRepeats) then
  59.                     MaxCountOfRepeats := Counter;
  60.             end;
  61.         end;
  62.     end;
  63.     SearchMaxCountOfRepeats := MaxCountOfRepeats;
  64. end;
  65.  
  66. Procedure AllSolutions(MaxCountOfRepeats: Integer; Number: Integer);
  67.  
  68. var
  69.     Counter, Previous, SingleNumber, NewNumber: Integer;
  70.  
  71. begin
  72.     while (Number > 0) do
  73.     begin
  74.         Counter := 1;
  75.         SingleNumber := Number mod 10;
  76.         Previous := SingleNumber;
  77.         Number := Number div 10;
  78.         NewNumber := Number;
  79.         while (NewNumber > 0) do
  80.         begin;
  81.             SingleNumber := NewNumber mod 10;
  82.             NewNumber := NewNumber div 10;
  83.  
  84.             begin
  85.                 if (Previous = SingleNumber) then
  86.                 begin;
  87.                     Inc(Counter);
  88.                     if (Counter = MaxCountOfRepeats) then
  89.                         write(Previous, ' ');
  90.                 end;
  91.             end;
  92.         end;
  93.     end;
  94. end;
  95.  
  96. Procedure PrintResult(MaxCountOfRepeats: Integer; Number: Integer);
  97.  
  98. begin
  99.     Writeln('Самая часто встречающаяся цифра/цифры: ');
  100.     if (MaxCountOfRepeats = 1) then
  101.         Writeln('Такой цифры нет');
  102.     if (MaxCountOfRepeats = 0) then
  103.         Writeln(Number)
  104.     else
  105.         AllSolutions(MaxCountOfRepeats, Number);
  106. end;
  107.  
  108. var
  109.     Number: Integer;
  110.     MaxCountOfRepeats: Integer;
  111.  
  112. begin
  113.     Writeln('Программа позволяет узнать, какая цифра в данном числе встречается чаще всего.');
  114.     Number := InputNumber();
  115.     MaxCountOfRepeats := SearchMaxCountOfRepeats(Number);
  116.     PrintResult(MaxCountOfRepeats, Number);
  117.     Readln;
  118.  
  119. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement