次のプログラムは、class を使用して、ユーザーが入力した口座番号を取得します。これは、定義済みの形式です。最初の 2 桁はアルファベット、次の 3 桁は支店コード、残りの 10 桁は乱数です。入力された入力がその形式でない場合、ユーザーに再度入力するように求める必要があります。以下のように実装してみました。最初の試行自体で正しい入力を与えると正常に動作しますが、else 部分コードを確認すると、「acno」の値を「tac」に戻す際に問題があります。誰かがコードplsのエラーを修正できますか....ありがとう....
#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;
}