Решение: #include <iostream> bool choise1(int); int choise2(int); int choise3(int); int choise4(int); size_t num_length(int num); int div(int); int main() { setlocale(LC_ALL, "Rus"); int n; std::cout << "Введите n: "; std::cin >> n; int v; do { std::cout << "Выберите желаемое действие:" << std::endl << "1. Выяснить, входит ли цифра 3 в запись числа n^2" << std::endl << "2. Поменять порядок цифр числа n на обратный" << std::endl << "3. Переставить первую и последнюю цифры числа n" << std::endl << "4. Приписать по единице в начало и в конец записи числа n" << std::endl << "5. Выход" << std::endl; std::cin >> v; switch (v) { case 1: if (choise1(n)) std::cout << "Да, входит" << std::endl; else std::cout << "Нет, не входит" << std::endl; break; case 2: std::cout << choise2(n) << std::endl; break; case 3: std::cout << choise3(n) << std::endl; break; case 4: std::cout << choise4(n) << std::endl; break; case 5: break; default: std::cout << "Введено недопустимое действие! Попробуйте ещё раз..." << std::endl; break; } } while (v != 5); return 0; } size_t num_length(int num) { size_t length = 0; while (num != 0) { num /= 10; ++length; } return length; } int div(int num) { int result = 1; size_t length = num_length(num); while (--length != 0) result *= 10; return result; } bool choise1(int n) { n *= n; while (n != 0) { if (n % 10 == 3) return true; n /= 10; } return false; } int choise2(int n) { int result = 0; while (n != 0) { result = result * 10 + n % 10; n /= 10; } return result; } int choise3(int n) { int d = div(n); if (d == 1) return n; return ((n % 10) * d + ((n - (n / d) * d) / 10) * 10) + n / d; } int choise4(int n) { int d = div(n); return (d * 10 + n) * 10 + 1; }
|