这个问题太长太复杂,无法放在标题中,所以我会在这里尝试描述它:
循环提示输入 4 个选项 (1,2,3,q),如果输入 1,则在 accounts[MAX] 数组中输入帐户 #。如果帐户的总索引 # 大于 10,则它不再接受输入,但如果帐户 [5] 和帐户 [11] 具有相同的帐户 #(均为 1400),则它继续接受它。如何检查两个帐户是否相同以及是否允许输入输入?
到目前为止我的代码:
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');
因此,在 accounts[i] 中,如果输入了 10 个帐户,则它不再接受更多帐户,但如果我输入 account # 1400 和 account[3] 或者我们也有 account # of 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 帐户 #,然后在输入 3999 之后输入 3998,但在输入 3999 之后,已填满最大帐户数(10 个帐户或帐户 [10]),但在输入 3998 之后,帐户 # 3999 是再次输入并且程序接受了该输入。如果仍然不清楚,我会尝试解释更多!