好的,我不知道这是否是一个有效的问题,但我在这里发帖是因为我不知道还有什么地方可以解决这个问题。这半年我刚开始在大学学习编程,我们刚刚参加了期末考试,但我没有通过。基本上,有 4 个问题,虽然第二个问题看起来很简单,但实际上很棘手,我就是不知道应该怎么做。
基本上问题是:有一家银行,当人们登录做生意时,你需要写一个程序记录他们登录的时间(0-24h),分钟(0-59),交易类型他们选择(1 表示使用银行卡登录,-1 表示使用同一张银行卡注销,2 表示将钱输入帐户,-2 表示取款)最后选择他们的银行账户号码(如果他们按 1 或 - 1 之前),或他们提取或存入的金额(如果他们选择 2 或 -2)。
基本上,我们必须这样做:
int n; //size of the array or number of ppl who transacted that day
cin >> n;
int bank[n][4];
for (int i=0; i<n; ++i)
{
cin >> bank[n][0];
cin >> bank[n][1];
cin >> bank[n][2];
cin >> bank[n][3];
}
这会填满所有信息,然后,
基本上,白天 4 个客户的示例输入看起来像这样:
- 11 40 1 458965
- 12 20 2 6000
- 15 40 -1 458965
- 16 25 -2 18000
这是我无法解决的部分:
我们的测试问我们:12点到13:00有多少人登录?
一开始我是
int count=0;
for (int i=0; i<n; ++i)
{
if (bank[i][0]==12)
{
count=count+1;
}
}
cout << count;
这样做的问题在于,它不考虑在 12 点之前在第三列中以 1 登录的人,但在 1 点钟之后以 -1 注销的人。这意味着他们仍然从 12 点到 1 点登录。
所以我做了
int count=0;
for (int i=0; i<n; ++i)
{
if (bank[i][0]==12)
{
count=count+1;
}
if (bank[i][2]==-1)
{
count=count+1;
}
}
cout << count;
但后来我意识到这会将一些登录计数两次,因为如果他们在 12 点登录时使用 1,然后在 3 点用 -1 注销,则该人会被计算两次。
它还询问我们任何人登录的最长时间是多少,假设银行在 24:00 开始所有人。老实说,我什至不知道如何开始那个。
编辑:对不起,我编辑了一堆东西以使其更清晰和正确的代码。我不太擅长这个但原谅我的错误