【发布时间】:2017-04-29 04:45:42
【问题描述】:
我是这个论坛的新手,正在寻求帮助,任何帮助将不胜感激!我被困在我的编程基础 1 课的这个作业上,并且在这一点上很绝望,因为我已经连续几个小时被困住了。谢谢。
这里是提示: 许多网站要求提供电话号码。问题是有这么多 表示电话号码的不同方式。示例包括 817-555-1234, 817 555 1234 (c) 和 (817) 555-1234 x23。编写一个输入的 C++ 程序 包含任何格式的电话号码的字符串,并以标准输出 格式。对于此分配,标准格式为 (817)555-1234。 您的 c++ 程序应该: 1. 输入包含数字的字符串 2. 仅将输入字符串中的数字复制到另一个字符串中 3. 如果输入字符串不正好包含 10,则发出错误消息 数字 4.以标准格式输出电话号码
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
#include <cctype>
using namespace std;
const int NUM_LENGTH = 10;
string ReadAndValidateUserNumber(string userNumber);
int main()
{
string userNumber;
ReadAndValidateUserNumber(userNumber);
system("PAUSE");
return 0;
}
string ReadAndValidateUserNumber(string userNumber)
{
bool check = false;
while (!check)
{
check = true;
cout << "Please enter a Number: ";
cin >> userNumber;
if (userNumber.length() != NUM_LENGTH)
cout << "The phone number may contain 10 digits only. \n";
else
{
userNumber.insert(0, "(");
userNumber.insert(4, ")");
userNumber.insert(8, "-");
for (int i = 0; i < userNumber.length(); i++)
{
if (isdigit(userNumber[i]))
{
userNumber = NUM_LENGTH;
}
}
}
if (!check)
{
cout << "Invalid Entry! Please try again." << endl;
}
}
return userNumber;
}
【问题讨论】:
-
错误是什么?什么是正确的行为?输出不良的例子?请明确点。这不是要求人们为您编写代码的地方。
-
我很抱歉。例如,如果我只输入 10 位数字“1123456789”,它只会说按任意键继续。如果我输入“123-456-9999”之类的内容,它会说错误,必须只有 10 位数字。
-
我想让程序吐出(123)456-9999格式的数字。我只是不知道如何以及如何使用“isdigit”从字符串中提取数字并忽略任何字母。
-
对原始用户输入应用十位数限制是不正确的。只有在解析字符串并提取所有数字之后,您才能验证该数字计数。所以放弃对字符串长度的检查。
-
@Incomputable 如果他在数字组之间添加括号或破折号,他会将整个字符串长度超过 10 个字符并触发错误消息。
标签: c++ c++11 visual-c++