这是一个问题:
编写程序以在一个10分钟的时间段内跟踪计划并报告计划冲突。要表示计划,请使用大小为10的bool数组;此数组知道任何给定的分钟是否被计划的任务占用。您应该将此数组中的所有值初始化为false,表示用户尚未安排任何内容。 1.声明一个正确大小和类型的数组。如图所示,初始化它。在继续之前这样做。
任务只需1分钟,但任务将在整个计划中重复,如下所示。任务将具有第一次和间隔。第一次是一个整数,表示第一次完成任务的确切时间。间隔表示任务重复之前的分钟数。如果间隔为0,则任务将不会重复(因此任务仅发生一次)。要将此任务输入到我们的计划中,我们将在所有这些时间将布尔值设置为true。 2.编写一个函数,该函数将数组,其大小以及第一个时间和间隔作为输入,并将相应的数组元素设置为true。
您的程序应反复提示用户输入第一次和间隔的两个整数。如果输入任一整数的负值,程序应终止。否则,您的程序应继续将schedule数组中的相应位置设置为true(使用您的函数!)。
该计划还应该检查一路上的冲突。如果程序尝试在计划数组中已设置为true的位置计划新任务,则会发生冲突。发生这种情况时,您的程序应该打印到“在时间T发生冲突”的屏幕,其中T是检测到冲突的时间表中的位置。 提示:检测冲突比听起来容易。修改你的功能!
最后,您的程序应该跟踪自开始运行以来检测到的冲突总数,并应在它终止之前打印出该值。 提示:您的函数可能返回一个整数,指示在尝试安排当前任务时检测到的冲突数。你也必须改变你使用这个功能的方式!
这是我的代码,我不知道什么是错的,你可以请帮助。感谢
#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 :(得分:0)
schedule
有2个逻辑错误: