C++ 将数字输入分离为单位

C++ 将数字输入分离为单位,c++,algorithm,pseudocode,C++,Algorithm,Pseudocode,我需要将用户输入分离成单元,并将它们存储在一个数组中。 e、 g如果用户输入6547。在Linux 上,数组将用C++存储{6,5,4,7} 如果您能帮助我使用伪代码或解释算法,我将不胜感激 我是一个初学者,所以请不要建议高级函数(如果你这样做了,请解释它的用法),因为到目前为止我们已经学习了基础知识 N.B |如果这样的问题已经得到了回答,而我在搜索时跳过了它,请一定要给我指一下 隔离最右边数字的数学: digit = digit % 10; 将数字右移一位的数学公式: new_numb

我需要将用户输入分离成单元,并将它们存储在一个数组中。 e、 g如果用户输入6547。在Linux

上,数组将用C++存储{6,5,4,7} 如果您能帮助我使用伪代码或解释算法,我将不胜感激

我是一个初学者,所以请不要建议高级函数(如果你这样做了,请解释它的用法),因为到目前为止我们已经学习了基础知识


N.B |如果这样的问题已经得到了回答,而我在搜索时跳过了它,请一定要给我指一下

隔离最右边数字的数学:

digit = digit % 10;  
将数字右移一位的数学公式:

new_number = old_number / 10;  
每个字母和数字都可以表示为文本字符。例如,“5”是表示单个十进制数字5的字符

将文本数字(字符)转换为数字的数学:

digit = char_digit - '0';
例如:

  digit = '9' - '0';
将数字转换为文本数字(字符)的数学:

例如:

  char_digit = 5 + '0';

你的问题基本上分为几个部分,你需要弄清楚:

  • 如何从输入中读取一个字符
  • 如何将一个字符转换为它所代表的数字
  • 如何将其存储在阵列中

  • 请尝试解释一下,如果您对上面列表中的某个特定点有问题,或者在其他地方有问题。

    假设变量输入字符串包含用户输入的数字&您希望将其存储在名为“a”的数组中……这是一个C代码段。。你可以很容易地把它转换成C++代码。 我建议将输入作为字符串而不是int,这样您就可以直接插入从末尾提取的数字…(否则您可以从开头开始存储整数,然后反转数组)


    希望有帮助

    这里有一个C++11解决方案:

    std::string input;
    std::cin >> input;
    int num = std::stoi(input);
    std::vector<int> v_int;
    for (unsigned int i = 0; i < input.size(); i++)
    {
        v_int.push_back(num % 10);
        num /= 10;
    }
    // To get the numbers in the original order
    std::sort(v_int.rbegin(), v_int.rend());
    for (unsigned int i = 0; i < v_int.size(); i++) {
        std::cout << v_int[i] << std::endl;
    }
    

    您必须尝试一些方法,而不仅仅是询问代码的堆栈溢出。首先了解如何将十进制字符转换为整数。(提示:减去
    '0'
    )。然后迭代每个字符,将其转换,并将其放入数组中。在询问之前,我确实仔细考虑了它。我知道可以使用static_cast将其转换为整数。问题在于“迭代每个字符”,我该怎么做?在最后一个数字上运行,并向左转。我试着取模数,使用%10到,因为我需要单位,但那不起作用。谢谢。我不是用旧的数字除以10得到新的数字。我使用
    static\u cast
    转换为整数。你能解释一下
    digit=char\u digit-'0'如果我的答案有帮助,请单击复选标记。完成。我之前投了赞成票,但很明显,在这个问题上失去的声誉剥夺了我这样做的权利。我在第一步就遇到了这个问题。多亏了托马斯的回答,这一点现在得到了澄清。
    
    scanf("%s",&input_string)
    size = strlen(input_string)-1
    input = atoi(input_string)
    while (input/10>0)
    {
        i=input%10;
        input=input/10;
        a[size]=i;
        size--;
    }
    
    std::string input;
    std::cin >> input;
    int num = std::stoi(input);
    std::vector<int> v_int;
    for (unsigned int i = 0; i < input.size(); i++)
    {
        v_int.push_back(num % 10);
        num /= 10;
    }
    // To get the numbers in the original order
    std::sort(v_int.rbegin(), v_int.rend());
    for (unsigned int i = 0; i < v_int.size(); i++) {
        std::cout << v_int[i] << std::endl;
    }
    
    int* dynamic_array = new int[v_int.size()];
    std::copy(v_int.begin(), v_int.end(), dynamic_array);
    delete dynamic_array;