在布尔数组c ++中调度?

时间:2013-11-02 03:23:31

标签: c++ arrays

这是一个问题:

编写程序以在一个10分钟的时间段内跟踪计划并报告计划冲突。要表示计划,请使用大小为10的bool数组;此数组知道任何给定的分钟是否被计划的任务占用。您应该将此数组中的所有值初始化为false,表示用户尚未安排任何内容。 1.声明一个正确大小和类型的数组。如图所示,初始化它。在继续之前这样做。

任务只需1分钟,但任务将在整个计划中重复,如下所示。任务将具有第一次和间隔。第一次是一个整数,表示第一次完成任务的确切时间。间隔表示任务重复之前的分钟数。如果间隔为0,则任务将不会重复(因此任务仅发生一次)。要将此任务输入到我们的计划中,我们将在所有这些时间将布尔值设置为true。 2.编写一个函数,该函数将数组,其大小以及第一个时间和间隔作为输入,并将相应的数组元素设置为true。

  1. 您的程序应反复提示用户输入第一次和间隔的两个整数。如果输入任一整数的负值,程序应终止。否则,您的程序应继续将schedule数组中的相应位置设置为true(使用您的函数!)。

  2. 该计划还应该检查一路上的冲突。如果程序尝试在计划数组中已设置为true的位置计划新任务,则会发生冲突。发生这种情况时,您的程序应该打印到“在时间T发生冲突”的屏幕,其中T是检测到冲突的时间表中的位置。 提示:检测冲突比听起来容易。修改你的功能!

  3. 最后,您的程序应该跟踪自开始运行以来检测到的冲突总数,并应在它终止之前打印出该值。 提示:您的函数可能返回一个整数,指示在尝试安排当前任务时检测到的冲突数。你也必须改变你使用这个功能的方式!

  4. 这是我的代码,我不知道什么是错的,你可以请帮助。感谢

    #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;
    }
    

1 个答案:

答案 0 :(得分:0)

schedule有2个逻辑错误:

  1. 您需要在更新之前检查阵列的现有状态 它
  2. 你的循环条件应该涉及数组的大小 你没有写下结束