-1

私の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;

}
4

1 に答える 1

1

交換

if (option == '1')

if (option == '1' && totalinput < MAX)

また、最大数に達すると、オプション1は無効になります。

チェックを先に追加することもできます。そのため、printf()無効になっている場合はオプション1を選択しないでください。

:との両方がiありtotalinputます。iを削除して使用するだけの方が良い(理解しやすい)と思いますtotalinput。(totalinputsより説明的ですi

于 2012-11-19T23:22:36.867 に答える