这是问题:
编写一个程序来跟踪一个 10 分钟内的日程安排并报告日程安排冲突。要表示时间表,请使用大小为 10 的 bool 数组;该数组知道任何给定的分钟是否被计划任务占用。您应该将此数组中的所有值初始化为false,表示用户尚未安排任何事情。1. 声明一个正确大小和类型的数组。初始化它,如图所示。在继续之前执行此操作。
一个任务恰好需要 1 分钟,但任务将在整个计划中重复,如下所示。一个任务会有一个第一次和一个间隔。第一次是一个整数,表示第一次完成任务的确切分钟数。间隔指示重复任务之前的分钟数。如果间隔为 0,则任务根本不会重复(因此任务只发生一次)。要将此任务输入到我们的计划中,我们将在所有这些时间将布尔值设置为 true。2.编写一个函数,将数组、它的大小、第一次时间和间隔作为输入,并将适当的数组元素设置为真。
您的程序应该反复提示用户输入两个整数作为第一次和间隔。如果输入了任一整数的负值,则程序应终止。否则,您的程序应继续将 schedule 数组中的适当位置设置为 true(使用您的函数!)。
该程序还应该在此过程中检查冲突。如果程序尝试在已设置为 true 的 schedule 数组中的某个位置安排新任务,则会发生冲突。发生这种情况时,您的程序应在屏幕上打印“在时间 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;
}