完全不使用字符串即可将整数转换为数组(包括LEZE ZEROS)

时间:2019-02-14 05:05:47

标签: c++

我正在为C ++类分配游戏牛和牛。我已经创建了将输入的整数存储到数组中的代码,但是我不知道如何存储前导零(这是分配中的测试用例)。在此作业中,我完全不能使用字符串。

例如,如果生成的代码为0242,并且用户输入0242 我得到的数组是{2,4,2}

如果允许我们使用字符串,这种分配将很容易,但是,我们不允许在字符串库中使用任何东西。

#include <iostream>
using namespace std;
int main() {
  //Get a guess from the user and store it in an array
  cout << "Enter a " << num_digits << " digit code: ";
  cin >> int_guess;

  int guess_digits[5];
  int new_guess[5];
  int i = 0;
  while (int_guess > 0)
  {
      guess_digits[i] = int_guess % 10;
      int_guess /= 10;
      i++;
  }
  for (int j = i - 1; j >= 0; j--)
  {
      new_guess[j] = guess_digits[j];
      cout << new_guess[j];
  }
} 

1 个答案:

答案 0 :(得分:0)

用户键入字符不是整数

这就是为什么,这样的代码:

int int_guess;
cin >> int_guess;

通常,一旦用户键入非整数的内容,就会出现问题。

虽然您可能无法使用字符串库,但是您可以自己轻松地将字符转换为数字。通过使用以下公式将数字转换为整数:

   char c;
   cin >> c;
   int x = c - '0';

结果是“ x”是键入的字符的数字值。

您的输入循环可能看起来像这样。

char c;
int guess_digits[5];
int index = 0;

while (index < num_digits)
{
    std::cin >> c;

    if (!std::cin)
    {
        break;
    }

    // convert character to integer manually

    if ((c >= '0') && (c <= '9'))
    {
        guess_digits[index] = c - '0';
        index++;
    }
    else
    {
        // invalid input - show an error
    }
}

该代码示例可能正在向后写数字到guess_digits数组中,但是我将保留该错误作为练习供您解决。