Палиндром в С++ без функций

Задано натуральне число m. Якщо це не паліндром (паліндром це число, яке однакове з обох боків – число-перевертень), то записуємо його у зворотному порядку та додаємо до заданого. Кроки повторюються, доки не буде отримано число-паліндром. Кількість виконаних операцій називають рівнем паліндромності заданого числа. Знайти рівень паліндромності числа m.

Я не понимаю как сделать уровень полдромности без функции, я такое ещё не учил


Ответы (2 шт):

Автор решения: Анонимный Паша
#include <algorithm> // std::reverse
#include <iostream> // std::cout, std::cin
#include <string> // std::to_string

bool is_palindrome(int m) {
    std::string a = std::to_string(m);
    std::string b = std::to_string(m);
    std::reverse(a.begin(), a.end());
    return a == b;
}

int main() {
    std::cout << "m = ";
    int m;
    std::cin >> m;
    if (is_palindrome(m)) {
        std::cout << "Число является палиндромом!\n";
    } else {
        std::cout << "Число не является палиндромом :(\n";
    }
    return 0;
}
→ Ссылка
Автор решения: Mikhailo

Все не просто просто, а просто очень просто.

#include <iostream>

using namespace std;

unsigned long long rev(unsigned long long n) {
    unsigned long long m = 0;

    while (n) {
        m = m * 10 + n % 10;
        n = n / 10;
        };

    return m;
    }


int main() {
    unsigned long long m;
    cout << "m = ";
    cin >> m;
    int level = 0;

    for (;; level++) {
        unsigned long long r = rev(m);

        if (r == m) {
            cout << "Palindrome " << m << ", level " << level << endl;
            return 0;
            }

        m += r;
        }
    }
→ Ссылка