これが有効な質問であるかどうかはわかりませんが、他にどこに向けるべきかわからないため、ここに投稿しています。この半年間、大学でプログラミングの勉強を始めたばかりで、最終試験がありましたが、失敗しました。基本的に4つの問題があり、2番目の問題は簡単に見えましたが、実際にはトリッキーで、どうすればいいのかわかりません.
基本的に問題は次のとおりです。銀行があり、人々がビジネスを行うためにログインするとき、ログインした時間 (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];
}
これですべての情報が埋まり、
基本的に、1 日の 4 人の顧客のサンプル入力は次のようになります。
- 11 40 1 458965
- 12 20 2 6000
- 15 40 -1 458965
- 16 25 -2 18000
ここに私が解決できなかった部分があります:
私たちのテストでは、12 時から 13 時までに何人がログインしたかを尋ねました。
最初はやった
int count=0;
for (int i=0; i<n; ++i)
{
if (bank[i][0]==12)
{
count=count+1;
}
}
cout << count;
これの問題は、12 時より前に 3 列目に 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 でログアウトすると、その 1 人が 2 回カウントされるためです。
また、銀行が 24:00 に全員を追い出すと仮定して、ユーザーがログインしていた最長期間を尋ねました。正直なところ、それをどのように開始するかさえわかりません。
編集:申し訳ありませんが、コードをより明確で正しいものにするために、たくさんのものを編集しました。私はこれがあまり得意ではありませんが、私の過ちを許してください