質問は長すぎてタイトルに入れるには複雑すぎるので、ここで説明しようと思います。
ループは 4 つのオプション (1,2,3,q) を要求し、1 を入力すると、accounts[MAX] 配列にアカウント # を入力します。アカウントの合計インデックス番号が 10 を超える場合、入力は受け入れられなくなりますが、アカウント [5] とアカウント [11] のアカウント番号が同じ (両方とも 1400) の場合は、引き続き入力を受け入れます。2 つのアカウントが同じかどうか、および入力を許可するかどうかを確認するにはどうすればよいですか?
これまでの私のコード:
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' && totalinput >= MAXtrans)
printf (" **Maximum number of transactions have been entered\n\n");
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');
したがって、アカウント[i]に10個のアカウントが入力されている場合、それ以上のアカウントは受け入れられませんが、アカウント#1400とアカウント[3]を入力するか、アカウント#1400もある場合、それらは同じであるため、その入力を受け入れますアカウントとアカウントの総数は同じです。
私の検証アカウント機能:
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;
}
編集:これは、うまくいけばもっと明確に表示されるはずのサンプル出力です?
利用可能なオプション:
1 - トランザクションを入力します 2 - 一般仕訳帳を表示します 3 - 貸借対照表を表示します q - プログラムを終了します
1、2、3、または q: 1 を入力してください
口座番号を入力してください (1000 から 3999 の間) : 3999
d (借方) または c (貸方) を入力: d
取引金額を入力してください: 10000
利用可能なオプション:
1 - トランザクションを入力します 2 - 一般仕訳帳を表示します 3 - 貸借対照表を表示します q - プログラムを終了します
1、2、3、または q: 1 を入力してください
口座番号を入力してください (1000 から 3999 の間) : 3998 **最大口座数が入力されました
利用可能なオプション:
1 - トランザクションを入力します 2 - 一般仕訳帳を表示します 3 - 貸借対照表を表示します q - プログラムを終了します
1、2、3、または q: 1 を入力してください
口座番号を入力してください (1000 から 3999 の間) : 3999
d (借方) または c (貸方) を入力: c
取引金額を入力してください: 1000
つまり、最初に 3999 アカウント # が入力され、次に 3998 が入力されますが、3999 が入力された後、アカウントの最大数 (10 アカウントまたはアカウント [10]) がいっぱいになりましたが、3998 が入力された後、アカウント # 3999 が入力されました。再度入力すると、プログラムはその入力を受け入れました。それでもわからない場合は、もっと説明しようと思います!