-1

私は現在、自分のクラスの割り当て用に疑似コードを書いていますが、どうすれば配列に戻ることができるのでしょうか?

私が探しているものをよりよく理解するために、プログラムの目的は、ユーザー入力の日付に日/月/年を加算および減算することです。

編集:リクエストに応じて例。今日の日付から行きます。

cout << "Today's Date is August 23, 2013."
     << "Add Year: "
cin >> year
cout << "Add Month: "
cin >> month
cout << "Add Day: "
cin >> day

ここで、ユーザー入力を取得して操作するので、次のように入力するとします: 年を追加: 5 月を追加: -9 日: 2

次のように出てくる必要があります

cout << "The modified date is: January 25, 2014"

これは 2014 年です。なぜなら、彼らは 1 年戻るのに十分な月数を差し引いたからですが、2 年を追加したため、1 年しか上がらないからです。

4

1 に答える 1

0

これは「リセット」ではなく (月を配列の最初の月、つまりインデックス 0 の月に設定するのと同じです)、むしろ「ラッピング」です。

次の場合は簡単に実行できます。

const char *monthNames[] = { "Jan", "Feb", ..., "Nov", "Dec" };
int month = 0;

--month;
if(month < 0)
  month += sizeof monthNames / sizeof *monthNames;

これは、最初に減少し (month -= 2さらに戻る必要がある場合があります)、次に値がアンダーフローしたかどうか、つまり負になったかどうかを確認することで機能します。そうであれば、配列内の要素の数 (12) が追加されます。たとえば、-1 + 12 = 11 (12 月) であるため、正しくなります。

注:イニシャライザの は残りの月である必要があります...monthNames

于 2013-08-23T13:17:44.953 に答える