下面的程序是获取用户输入的账号,使用类,这是一个预定义的格式——前两位是字母,接下来的三位是分行代码,剩下的十位是一些随机数。如果输入的输入不是格式,它应该提示用户再次输入。我尝试按如下方式实现它。如果我在第一次尝试时给出正确的输入,它可以正常工作,但是当我检查 else 部分代码时,将 'acno' 的值返回到 'tac' 时会出现问题。有人可以纠正代码中的错误吗......谢谢......
#include<iostream>
#include<string>
using namespace std;
class saving
{
string acc_no,tac;
string br_code;
public:
void input();
} sav;
string chkno(string acno)
{
string cc,bc,no,ano;
int i,len,a=1,b=1,c=1;
for(len=0; acno[len]!='\0'; len++);
if(len!=15)
{
cout<<"Account No. is Invalid.Please enter again.";
cout<<"\nAccount No : "; cin>>ano;
chkno(ano);
}
else
{
cc=acno.substr(0,2); bc=acno.substr(2,3); no=acno.substr(5,10);
for(i=0; i<2; i++)
{
if(!isalpha(cc[i]))
{
a=0; break;
}
}
for(i=0; i<3; i++)
{
if(!isdigit(bc[i]))
{
b=0; break;
}
}
for(i=0; i<10; i++)
{
if(!isdigit(no[i]))
{
c=0; break;
}
}
if(a==1&&b==1&&c==1)
{
cout<<"\nValid - Account no : "<<acno;
return acno;
}
else
{
cout<<"Incorrect format.Please enter again";
cout<<"\nAccount No : "; cin>>ano;
chkno(ano);
}
}
}
void saving::input()
{
cout<<"Account No : ";
cin>>acc_no;
tac=chkno(acc_no);
acc_no=tac;
cout<<"\nAcc.No :"<<acc_no;
br_code=acc_no.substr(2,3);
cout<<"\nBranch Code is :"<<br_code;
}sav;
int main()
{
sav.input(); return 0;
}