программа правильно работает только с числами, содержащими не более 9 разрядов

Только учусь программированию. Решила попробовать написать программу, которая считает, сколько разрядов в числе, и выводит, чему равен каждый из разрядов. Программа работает с числами, в которых до 9 разрядов включительно, но если я ввожу число с 10 и более разрядами, то она выводит некорректный результат. Как это объяснить или как исправить? результат работы с 11 разрядами

#include <iostream>

using namespace std;

int main()
{
    setlocale(0, "Russian");

    int n{}, k{}, nc{}, r{};

    cout << "деление числа на разряды \n";
    cout << "введите целое число: ";
    cin >> n;

    nc = n;
    while (nc > 0) {
        k ++;
        nc = nc / 10;
    }
    
    cout << "в вашем числе " << k << " разряд";
    
    for (int i = k; i > 0; i--) {
        r = n % 10;
        cout << i << "-ый разряд равен " << r << "\n";
        n = n / 10;
    }
}

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

Автор решения: MBo

Десятизначное число не влезает в int. До 18 знаков- long long

И скобки фигурные ни к чему лишние

→ Ссылка
Автор решения: ТарасПрогер

То число которое Вы ввели слишком большое для переменной n.

Следовательно, происходит переполнение переменной.

Диапазон int'a — от -2 147 483 648 до 2 147 483 647. Чтобы эго расширить, нужно добавить спецификатор long long.

Тогда диапазон будет от −9 223 372 036 854 775 808 до 9 223 372 036 854 775 807.

Кстати, есть альтернативный вариант решения Вашей задачи:

#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    setlocale(0, "Russian");

    long long int n{};
    string txt_num;

    cout << "деление числа на разряды \n";
    cout << "введите целое число: ";
    cin >> n;

    txt_num = to_string(n);

    cout << "в вашем числе " << txt_num.length() << " разряд" << endl;

    for (int i = 0; i < txt_num.length(); i++) 
    {          
        cout << i << "-ый разряд равен " << txt_num[i] << '\n';       
    }
    system("pause");
}

Так хитрее и быстрее. Просто нужно сконвертировать в string.

→ Ссылка