私のaccounts[MAX]のMAXが10で、account [MAX]にアカウント番号を入力するようにユーザーに促すループの場合、アカウントの数が10を超えているかどうかを確認するコードを作成し、ユーザーに通知するにはどうすればよいですか。アカウントの最大数が入力され、入力を受け付けなくなったことはありますか?
これが私のdowhileループです
do
{
printf ("Options Available: \n");
printf ("\n 1 - Enter a transaction");
printf ("\n 2 - View the general journal");
printf ("\n 3 - View the balance sheet");
printf ("\n q - Quit the program\n");
printf ("\nPlease enter 1, 2, 3 or q: ");
option = validateoption();
if (option == '1')
{
printf ("\nEnter an account number (between 1000 and 3999): ");
accounts[i] = validateaccount();
printf ("\n");
printf ("Enter d (debit) or c (credit): ");
debcred[i] = validatedebcred();
printf ("\n");
printf ("Enter transaction amount: ");
amount[i] = validateamount();
printf ("\n");
printf ("\n");
i++;
totalinput++;
}
if (option == '2')
journal(accounts, debcred, amount, &totalinput);
if (option == '3')
balancesheet(accounts, debcred, amount, &totalinput);
} while (option != 'q');
そして、1、2、3、またはqを入力すると機能するとしましょう。アカウント[i]で、アカウントの数が10を超えた場合、アカウントの最大数が入力されたことをユーザーに通知し、それ以上の入力を受け入れないようにするには、何を書くことができますか?
私のvalidateaccount関数:
long validateaccount() { // VALIDATE INPUT FOR ACCOUNT # IN TRANSACTION FUNCTION
int keeptrying = 1, rc;
long i;
char after;
do
{
rc = scanf ("%ld%c", &i, &after);
if (rc == 0)
{
printf (" **Invalid input try again: ");
clear();
}
else if (after != '\n')
{
printf (" **Trailing characters try again: ");
clear();
}
else if (i < 1000 || i > 3999)
{
printf (" **Invalid input try again: ");
}
else
{
keeptrying = 0;
}
} while (keeptrying == 1);
return i;
}