将数字输入分成单位

时间:2013-11-20 23:44:21

标签: c++ algorithm pseudocode

我需要将用户输入分成单元并将它们存储在一个数组中。 例如,如果用户输入6547. Array将存储{6,5,4,7}在Linux上使用C ++

如果您能帮助我使用伪代码或解释算法,我将不胜感激。

我是初学者所以请不要提出建议高级功能(如果你这样做,请解释它的使用),因为我们到目前为止已经学过基础知识

N.B | 如果此问题已经得到解答,我在搜索中跳过了它,请指出我的问题。

4 个答案:

答案 0 :(得分:0)

隔离最右边数字的数学:

digit = digit % 10;  

将数字右移一位的数学运算:

new_number = old_number / 10;  

每个字母和数字都可以表示为文本字符。例如,'5'是表示单个十进制数字5的字符。

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

digit = char_digit - '0';

示例:

  digit = '9' - '0';

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

char_digit = digit + '0';

示例:

  char_digit = 5 + '0';

答案 1 :(得分:0)

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

  1. 如何从输入中读取一个字符
  2. 如何将一个字符转换为它所代表的数字
  3. 如何将其存储在数组中
  4. 请尝试解释一下您是否对上述列表中的某些特定问题有疑问,或者在其他地方出现问题。

答案 2 :(得分:0)

假设变量input_string保存用户输入的数字&你想把它存储在一个名为'a'的数组中...这里是一个C片段..你可以轻松地将它转换为C ++代码.. 我建议将输入作为字符串而不是int,以便您可以直接插入从末尾提取的数字...(否则您可以从开始存储整数然后反转数组)

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--;
}

希望有所帮助!

答案 3 :(得分:0)

这是一个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;
}

如果你想要它在c风格的数组中,请执行以下操作:

int* dynamic_array = new int[v_int.size()];
std::copy(v_int.begin(), v_int.end(), dynamic_array);
delete dynamic_array;