Proc31. Описать функцию IsPalindrom($$K$$), возвращающую True, если целый параметр $$K$$ ($$> 0$$) является палиндромом (то есть его запись читается одинаково слева направо и справа налево), и False в противном случае. С ее помощью найти количество палиндромов в наборе из 10 целых положительных чисел. При описании функции можно использовать функции DigitCount и DigitN из заданий Proc29 и Proc30.
Решение от Дмитрия:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# include <iostream> # include <windows.h> # include <cmath> # include <iomanip> # include <fstream> using namespace std; bool IsPalindrom(int k); int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int k; int answer = 0; // Количество палиндромов в наборе int q; ifstream in ("Proc31.txt"); cout << "Набор чисел: "; while (in >> k) { cout << k << " "; if (k>0) { q = IsPalindrom(k); answer += q; } } cout << endl; cout << "Количество палиндромов в наборе = " << answer << endl; system ("pause"); return 0; } bool IsPalindrom(int k) { int k1 = k; // снимаем копию с числа k int k2; int k_ = 0;// запись числа с обратной стороны // bool an; while (k1>0) { k2 = k1%10; k_ = k_*10+k2; k1 = k1/10; } return k_ == k; // an = k_ == k; // return (an); } |
Файл Proc31.txt:
1 |
7667 9 0 77 898 56 123 -22 |
Другие задачи из раздела Proc можно посмотреть здесь.
Комментарии: