C 电话号码程序
C++ Phone Number Program
我是这个论坛的新手,正在寻求一些帮助,任何帮助将不胜感激!我对我的编程基础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;
}
您似乎有逻辑错误。
bool check = false;
while (!check)
{
check = true;
....
if (!check)
{
cout << "Invalid Entry! Please try again." << endl;
}
}
您会注意到检查永远不会再次变为假。因此,如果语句永远不会执行底部,并且循环永远不会迭代一次以上,因为检查始终是正确的。您可能想做
check = true
以正确的格式有条件。
代码处于可怕状态。冷静下来并集中精力。除了写的内容外,还有很多问题。我建议您将工作代码运送到任何代码审核网站。
您正在错误地进行检查,以及检查后您在做什么也是错误的。
userNumber = NUM_LENGTH;
这将使NUM_LENGTH
截断为char,因此您会在userNumber
内有一些奇怪的东西。
这是正确的检查:
if (!isdigit(userNumber[i]))
{
std::cout << "input should be only numbersn";
return; //function should return void
}
^^这是如果要突破非数字输入,如果要跳过非数字,可以将std::copy_if
使用到另一个字符串中,或者调整上述内容以为您使用。如果要删除非数字的东西,也可以使用std::remove_if
。
std::string fetched_input;
std::copy_if(userNumber.begin(), userNumber.end(), fetched_input.begin(), std::isdigit);
^^这只会为您提供数字的字符串。
另外,您不会在正确的位置进行检查。再次考虑一下。
相关文章:
- 程序不断发送垃圾邮件号码?
- C++ 电话号码字母拨号程序 - 语法错别字?还是非 ASCII 字符?
- 如何让程序只运行用户输入的号码?
- 使用 Firebase 从C++获取用户的电话号码
- 电话拨号程序将字母转换为卡片花色而不是数字
- 文本文件中的电话号码查找
- 如何实现C 电话号码格式:(000)-000-000
- C 电话号码程序
- 我想串入文本文档中列出的电话号码
- 电话号码的QRegularExpression
- 限制输入的电话号码中的区号
- 在生成的 Word 文档中插入并激活电话号码
- 将存储在SD卡上的电话号码插入短信发送AT命令Arduino
- 传递参数递归 C++(电话号码的字母组合)
- C++ 创建电话号码生成器
- 电话号码表
- 在c++中格式化电话号码
- 电话号码的字母组合
- 将奇怪的十六进制电话号码转换为正常数字
- 使用标准模板库list或vector和multimap创建电话号码簿