Advertisement
believe_me

Untitled

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