Advertisement
believe_me

Untitled

Oct 21st, 2021
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.86 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(NumberArray: String): Integer;
  37.  
  38. var
  39.     MaxCountOfRepeats, Counter, i, j, EndNumber: Integer;
  40.  
  41. begin
  42.     EndNumber := length(NumberArray);
  43.     for i := 1 to EndNumber do
  44.     begin
  45.         Counter := 1;
  46.         for j := i + 1 to EndNumber do
  47.         begin
  48.             if (NumberArray[i] = NumberArray[j]) then
  49.             begin
  50.                 Inc(Counter);
  51.                 if (Counter > MaxCountOfRepeats) then
  52.                     MaxCountOfRepeats := Counter;
  53.             end;
  54.         end;
  55.     end;
  56.     SearchMaxCountOfRepeats := MaxCountOfRepeats;
  57. end;
  58.  
  59. Procedure AllSolutions(MaxCountOfRepeats: Integer; NumberArray: String);
  60.  
  61. var
  62.     Counter, i, j, EndNumber: Integer;
  63.  
  64. begin
  65.     EndNumber := length(NumberArray);
  66.     for i := 1 to EndNumber do
  67.         Counter := 1;
  68.  
  69.     begin;
  70.         for j := i + 1 to EndNumber do
  71.         begin
  72.             if (NumberArray[i] = NumberArray[j]) then
  73.             begin
  74.                 Inc(Counter);
  75.                 if (Counter = MaxCountOfRepeats) then
  76.                     Write(NumberArray[i], ' ');
  77.             end;
  78.         end;
  79.     end;
  80. end;
  81.  
  82. Procedure PrintResult(MaxCountOfRepeats: Integer; NumberArray: string);
  83.  
  84. begin
  85.     Writeln('Самая частовстречающаяся цифра/цифры: ');
  86.     if (MaxCountOfRepeats = 1) then
  87.         Writeln('Такой цифры нет');
  88.     if (MaxCountOfRepeats = 0) then
  89.         Writeln(NumberArray)
  90.     else
  91.         AllSolutions(MaxCountOfRepeats, NumberArray);
  92. end;
  93.  
  94. var
  95.     NumberArray: String;
  96.     MaxCountOfRepeats: Integer;
  97.  
  98. begin
  99.     Writeln('Программа позволяет узнать, какая цифра в данном числе встречается чаще всего.');
  100.     NumberArray := IntToStr(InputNumber());
  101.     MaxCountOfRepeats := SearchMaxCountOfRepeats(NumberArray);
  102.     PrintResult(MaxCountOfRepeats, NumberArray);
  103.     Readln;
  104.  
  105. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement