让用户输入一个整数字符串并输出不同的字符串

时间:2016-06-14 23:05:48

标签: c++

嗨我在启动这个程序时遇到了麻烦,因为我是新手,并且不知道如何使用循环来构建这个感谢

这是方向:

  

对于此作业,请编写名为assignment2的程序(来源与.cpp扩展名相同)至   提示用户输入一个整数值(忽略负值),然后使用以下规则输出该值:

     
      
  • 整数值中的每个数字将显示与数字值相同的次数   本身,有一个例外......数字0将显示一次,如数字1。
  •   
  • 使用单个短划线字符分隔每个数字字符串。   例如:
      如果输入值为120473,则显示应如下所示:
      1-22-0-4444-7777777-333
      如果输入值为5938061,则显示应如下所示:   55555-999999999-333-88888888-0-666666-1
  •   
     

此外,询问用户是否要使用其他整数值重试。如果是这样,请重复上述步骤。结束   用户选择退出时的程序(不想重试)。

     

此作业是使用以下内容的练习:

     

一元经营者:
  ! ++ --

     

二元运算符:
  + - * / % && ||

     

数据类型:
  bool
  char
  int
  enum

     

流量控制:
  if - else
  switch
  do - while循环
  while循环
  for循环

     

此外,您可以使用Math库提供的任何必要功能。包括数学   库,将以下行添加到包含语句列表中:

#include <cmath>

1 个答案:

答案 0 :(得分:0)

对于大多数数字操作分配,我建议将数字视为字符字符串而不是数字。

基金会

让我们从基础开始:

#include <iostream>
#include <string>
#include <cstdlib>

using std::cout;
using std::cin;
using std::getline;

int main(void)
{
  cout << "Paused.  Press Enter to continue.\n";
  cin.ignore(100000, '\n');
  return EXIT_SUCCESS;
}

上述程序有望保持控制台(终端)窗口打开,直到按下Enter键。

获取输入

我们会要求用户提供一个号码,这也称为提示

// The prompt text doesn't change so it's declared as const.
// It's declared as static because there is only one instance.
static const char prompt[] = "Enter a number: ";
cout.write(prompt, sizeof(prompt) - 1U); // Subtract 1 so the terminating nul is not output.

// Input the number as text
string number_as_text;
getline(cin, number_as_text);

打印数字

实际上,在此步骤之前,您应该验证文本是否只包含数字。重复提示,直到用户输入任何内容或有效数据。

字符串可以作为数组访问。所以我们将建立一个循环:

const unsigned int length = number_as_text.length();
for (unsigned int index = 0U;
     index < length;
     ++index)
{
  // Extract the digit.
  const char c = number_as_text[index];

  // Verify it is a digit.
  if (!isdigit(c))
  {
    continue;
  }

  unsigned int quantity = c - '0'; // Convert to a number.
  if (quantity == 0) quantity = 1; // The requirements lie, for zero there is a quantity of 1.

  // Use "quantity" to print copies of the character.

}
cout << "\n";

东西

我不会为你编写整个程序,因为你没有为我的服务付费。所以你必须弄清楚何时打印' - '以及如何打印数字的许多副本。

如果此答案不正确,请通过一些说明或限制更新您的问题。