2013-11-02 64 views
-1

這就是問題:調度在布爾數組C++中?

編寫一個程序,以跟蹤一個時間間隔10分鐘的時間表並報告調度衝突。要表示日程表,請使用大小爲10的bool數組;這個數組知道是否任何給定的分鐘被一個計劃任務佔用。你應該初始化這個數組中的所有值爲false,表示用戶還沒有計劃任何事情。 1.聲明一個正確大小和類型的數組。如圖所示初始化它。在繼續之前這樣做。

任務只需要1分鐘,但任務將在整個計劃中重複,如下所示。任務將有第一次和一個時間間隔。第一次是一個整數,表示第一次完成任務的確切時間。間隔表示直到任務重複的分鐘數。如果間隔爲0,則任務不會重複(因此任務只發生一次)。爲了將這個任務輸入到我們的計劃中,我們將在任何時候將布爾值設置爲true。 2.編寫一個將數組,它的大小,第一次和間隔作爲輸入的函數,並將相應的數組元素設置爲true。

  1. 您的程序應重複提示用戶輸入兩個整數的第一次和間隔。如果輸入任一整數的負值,程序應該終止。否則,你的程序應該繼續在schedule數組中設置合適的位置爲true(使用你的函數!)。

  2. 程序還應該檢查一路上的衝突。如果程序嘗試在計劃數組中已設置爲true的位置安排新任務,則會發生衝突。發生這種情況時,程序應打印到「在時間T發生衝突」的屏幕上,其中T是檢測到衝突的時間表中的位置。提示:檢測衝突比聽起來容易。修改你的功能!

  3. 最後,你的程序應該跟蹤,因爲它開始運行檢測到衝突的總數,並應打印出它終止權之前此值。 提示:您的函數可能會返回一個整數,指示嘗試安排當前任務時檢測到多少衝突。你也必須改變你使用這個功能的方式!

,這是我的代碼,我不知道什麼是錯白衣是你可以請幫助。感謝

#include <iostream> 
using namespace std; 

int schedule (bool arr[], int size, int firstTime, int interval) 
{ 
    int conflict = 0; 
    int n = firstTime - 1; 
    arr[n] = true; 

    do 
    { 
     arr[n + interval] = true; 
     n = n + interval; 

     if (arr[n + interval] == arr[n + interval]) 
     { 
      cout << "A conflict has occurred at time " << n + interval << endl; 
     } 

     conflict = conflict + 1; 
    } 
    while (arr[n] == true); 

    cout << "Total conflicts detected: " << conflict << endl; 

    return conflict; 
} 

int main() 
{ 
    int firstTime, interval; 
    bool arr[10]; 
    int i = 0; 

    while (i < 10) 
    { 
     arr[i] = false; 
     i = i + 1; 
    } 


    cout << "Please enter a value for firstTime and interval: " << endl; 
    cin >> firstTime >> interval; 

    while (firstTime >= 0 && interval >= 0) 
    { 
     schedule(arr, 10, firstTime, interval); 
     cout << arr << endl; 
    } 

    return 0; 
} 
+0

你能解決這個缺口嗎? –

+1

如果你不知道你的代碼有什麼問題,並且你是編譯它的人,你如何期待我們知道? – nhgrif

+0

我不認爲'cout << arr << endl;'是做你認爲它做的。你可能會想寫一個函數來顯示該數組。 –

回答

0

schedule有2個邏輯錯誤:

  1. 你需要檢查陣列的現有狀態進行更新前 它
  2. 您的循環條件應當包括陣列,這樣的尺寸 你不註銷結束