gpt4 book ai didi

C++验证驾照程序

转载 作者:行者123 更新时间:2023-11-28 03:01:27 25 4
gpt4 key购买 nike

我已经为此苦苦思索了大约 2 个小时,所以我决定重新审视它。如果您能提供帮助,将不胜感激,如果答案是在 C++ 中,或者逻辑只是看不出为什么它不起作用,请不要打扰。(我得到的问题是在运行时发生的“字符串下标超出范围”)程序应该将 9 个字符放入一个字符串中,前 5 个应该是数字,最后 4 个应该是字母。

cout<<"please enter in licence number :";
cin>>licence;
while(licence.length()!=9)
{
cout<<"Sorry please re-enter licence should be 9 characters"<<endl<<"first 5 are numbers last 4 are Letters :";
cout<<"please enter in licence number :";
cin>>licence;
system("CLS");
}
for(int i=0;i<=4;i++)
{
for(int j=4;j<=9;j++)
{
while(!isdigit(licence[i])&&!isalpha(licence[j]))
{
cout<<"Sorry please re-enter licence should be 9 characters"<<endl<<"first 5 are numbers last 4 are Letters :";
cout<<"please enter in licence number :";
cin>>licence;
system("CLS");
}
}
}

好的,这是我更新的功能,但仍然无法正常工作

bool islicensevalid(string license)
{
if (license.length() != 9)
{
cout<<"Not nine characters long "<<endl;
return false;
}

for (unsigned short index = 0; index < 5; ++index)
{
if(!isdigit(license[index]))
{
cout<<"first 5 characters aren't numbers"<<endl;
return false;
}
}

for (unsigned short index = 5; index < 9; ++index)
{
if(!isalpha(license[index]))
{
cout<<"final 4 characters aren't letters"<<endl;
return false;
}
}
return true;
}

我再次更改了数字,但它要么出现与之前相同的错误,要么显示最后 4 位数字是字母

最佳答案

您应该将您的验证逻辑分解为一个单独的验证函数,因为您的输入和验证逻辑过于交织在一起,从而导致您的问题。特别是,如果您在验证循环中发现许可证无效,则说明您没有检查输入的新许可证长度是否正确,并且您还在中间重新开始验证。那可不好。

最好将关注点分开。将验证逻辑放在一个函数中,并让输入循环调用它。这将使一切变得更加清晰和更容易得到正确的。

bool is_valid_license(const string &license)
{
// Correct length?
if (license.length() != 9)
return false;

// Are first five characters digits?
for (int i = 0; i < 5; i++)
if (!isdigit(license[i]))
return false;

// Are next four characters letters?
for (int i = 5; i < 9; i++)
if (!isalpha(license[i]))
return false;

// Valid license
return true;
}

然后在你的输入代码中,你可以这样做:

cout << "Please enter in licence number :";
cin >> licence;

while (! is_valid_license(license) )
{
cout<<"Sorry please re-enter licence should be 9 characters"<<endl<<"first 5 are numbers last 4 are Letters :";
cout<<"please enter in licence number :";
cin>>licence;
}

关于C++验证驾照程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20734397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com