2

友達、

私は予約プロジェクトに取り組んでいます。詳細とおりです。つまり、スロットは (9:00、9:30、10:00.... 7:00) のように始まります。

ここでは、使用可能なスロットを表示するために、次のロジックを使用しています。

  1. [9:00、9:30、10:00、10:30、... 7:00] のようなリスト ( LIST A ) に30 分間のすべてのスロットを格納する
  2. 予約済みの予定 ( start と end time を含む) をループし、開始時間がLIST A要素のいずれかと一致する場合は、その List からその要素を削除します。そしてループは続きます。

ここで、問題は、予約が9:30-10:00の場合を考えてみます。私の論理に基づいて、9:30は LIST A 要素と一致し、そのリストから 9:30 を削除します。

したがって、利用可能なスロットは [9:00, X ,10:00, 10:30, .... 7:00] と表示されます。実際には [9:00, 9:30, 10:30, 11:00... 7:00] のはずです

利用可能なスロット9:00-9:30、10:30-11:00を表示する代わりに、9:30がリストから削除されているため、9:00-10:00、10:30-11を表示します。

これを解決するのを手伝ってください。または、この問題に対する代替アプローチをいくつか提案してください。ひどく必要です。

4

2 に答える 2

2

一次元配列を使用する代わりに、次のような多次元配列を使用することをお勧めします

[[9:00][9:30],[9:30][10:00],[10:00][10:30], .... nth Item] 

ここで、ロジックは次のようになります

var start=[start time]
var end=[end time]
var duration=[duration]

for (i=start;i<end;i+=duration)
{
   if(start==A[i][0])
   remove(A[i][0]);
}
A.sort();
return A; 
于 2012-11-10T07:51:24.240 に答える
2

あなたが混同しているのは、2番目のスロットの開始時間を最初のスロットの終了時間として取っていることです。それを行うのではなく、できることは、開始時間と期間を保存することです。

単純に終了時刻を計算するには、次のようにします。

StartTime.AddMinutes(30);

最後にもう 1 つコメントを追加します。非常に厳格な構造を構築しようとしています。また、アプリケーションを拡張しようとすると、問題に直面するでしょう。

于 2012-11-09T16:43:48.893 に答える