Advertisement
believe_me

Untitled

Oct 27th, 2021
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.61 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int inputNumber() {
  7.     const int MAX_NUMBER = 100000000;
  8.     bool isIncorrect;
  9.     int number;
  10.     string input = "";
  11.     printf("Введите натуральное число не большее, чем %d \n", MAX_NUMBER);
  12.     do {
  13.         isIncorrect = false;
  14.         getline(cin, input);
  15.         try {
  16.             number = stoi(input);
  17.         }
  18.         catch (invalid_argument ex) {
  19.             cout << "Нужно ввести число.\n";
  20.             isIncorrect = true;
  21.         }
  22.         catch (out_of_range ex) {
  23.             printf("Нужно ввести число, которое не больше, чем %d\n", MAX_NUMBER);
  24.             isIncorrect = true;
  25.         }
  26.         if (!isIncorrect && (number < 1 || number > MAX_NUMBER)) {
  27.             cout << "Число должно являться положительным и быть не больше " << MAX_NUMBER << "\n";
  28.             isIncorrect = true;
  29.         }
  30.     } while (isIncorrect);
  31.     return number;
  32. }
  33.  
  34. int searchMaxCountOfRepeats(int number) {
  35.     int maxCountOfRepeats, counter, previous, singleNumber, newNumber;
  36.     maxCountOfRepeats = 0;
  37.     while (number > 0) {
  38.         counter = 1;
  39.         singleNumber = number % 10;
  40.         previous = singleNumber;
  41.         number = number / 10;
  42.         newNumber = number;
  43.         while (newNumber > 0)
  44.         {
  45.             singleNumber = newNumber % 10;
  46.             newNumber = newNumber / 10;
  47.             if (previous == singleNumber)
  48.                 counter++;
  49.             if (counter > maxCountOfRepeats)
  50.                 maxCountOfRepeats = counter;
  51.         }
  52.     }
  53.     return maxCountOfRepeats;
  54. }
  55.  
  56. void allSolutions(int number, int maxCountOfRepeats) {
  57.     int counter, previous, singleNumber, newNumber;
  58.     while (number > 0) {
  59.         counter = 1;
  60.         singleNumber = number % 10;
  61.         previous = singleNumber;
  62.         number = number / 10;
  63.         newNumber = number;
  64.         while (newNumber > 0)
  65.         {
  66.             singleNumber = newNumber % 10;
  67.             newNumber = newNumber / 10;
  68.             if (previous == singleNumber)
  69.             {
  70.                 counter++;
  71.                 if (counter == maxCountOfRepeats)
  72.                     cout << previous << "; ";
  73.             }
  74.         }
  75.     }
  76. }
  77.  
  78. void printResult(int number, int maxCountOfRepeats)
  79. {
  80.     cout << "Самая часто встречающаяся цифра/цифры: ";
  81.     if (maxCountOfRepeats == 1)
  82.         cout << "Такой цифры нет";
  83.     if (maxCountOfRepeats == 0)
  84.         cout << number;
  85.     else
  86.         allSolutions(number, maxCountOfRepeats);
  87. }
  88.  
  89.  
  90. int main() {
  91.     setlocale(LC_ALL, "Russian");
  92.     int maxCountOfRepeats, number;
  93.     cout << "Программа позволяет узнать, какая цифра в данном числе встречается чаще всего.\n";
  94.     number = inputNumber();
  95.     maxCountOfRepeats = searchMaxCountOfRepeats(number);
  96.     printResult(number, maxCountOfRepeats);
  97.  
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement