Следующая программа предназначена для того, чтобы получить номер учетной записи, вводимый пользователем, используя класс, который имеет предопределенный формат: первые два являются алфавитами, следующие три цифры являются кодом ветвления, а остальные десять цифр некоторые случайные числа. Если введенный ввод не относится к формату, он должен попросить пользователя ввести его снова. Я попытался реализовать его следующим образом. Если я даю правильный ввод при первой попытке, он отлично работает, но когда я проверяю коды частей else, возникает проблема с возвратом значения «acno» в «tac». Может кто-нибудь исправить ошибку в коде Pls .... Спасибо ....Функция, возвращающая строку в C++
#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;
}
Можем ли мы увидеть ошибку? – Shoe
В вашей функции chkno есть несколько путей, которые никогда не попадают в оператор return. – Eelke