Advertisement
Vernon_Roche

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

Oct 11th, 2023 (edited)
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int inputK();
  6. int countSumNumbers(int);
  7. void printAllResultNumbers(int, int);
  8. int searchBorder(int);
  9.  
  10. int main()
  11. {
  12.     setlocale(LC_ALL, "Rus");
  13.     int k, border;
  14.     cout << "Программа выводит все натуральные числа, которые в k раз больше суммы своих цифр.\n";
  15.     k = inputK();
  16.     border = searchBorder(k);
  17.     cout << "Искомые числа:\n";
  18.     printAllResultNumbers(k, border);
  19.     return 0;
  20. }
  21.  
  22. int inputK()
  23. {
  24.     int k;
  25.     bool isNotCorrect;
  26.     cout << "Введите k в диапазоне [1; 200 000]:\n";
  27.     do {
  28.         cin >> k;
  29.         if (cin.fail() || cin.get() != '\n') {
  30.             isNotCorrect = true;
  31.             cout << "Ошибка ввода. Введите натуральное число в промежутке [1; 200 000]:" << '\n';
  32.             cin.clear();
  33.             while (cin.get() != '\n');
  34.         }
  35.         else if ((k < 1) || (k > 200000)) {
  36.             cout << "Ошибка ввода. Введите натуральное число в промежутке [1; 200 000]:" << '\n';
  37.             isNotCorrect = true;
  38.         }
  39.         else {
  40.             isNotCorrect = false;
  41.         }
  42.     } while (isNotCorrect);
  43.     return k;
  44. }
  45.  
  46. int countSumNumbers(int number)
  47. {
  48.     int sum;
  49.     sum = 0;
  50.     while (number) {
  51.         sum = sum + number % 10;
  52.         number = number / 10;
  53.     }
  54.     return sum;
  55. }
  56.  
  57. void printAllResultNumbers(int k, int border)
  58. {
  59.     for (int i = 1; i <= border; i++) {
  60.         if (i == k * countSumNumbers(i)) {
  61.             cout << i << '\n';
  62.         }
  63.     }
  64. }
  65.  
  66. int searchBorder(int k)
  67. {
  68.     int pot;
  69.     pot = 1;
  70.     for (int i = 1; i <= 10; i++) {
  71.         if (pot > 9 * i * k) {
  72.             return pot;
  73.         }
  74.         pot = pot * 10;
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement