2013-11-02 2 views
-1

это вопрос:Планирование в булевом массиве C++?

Напишите программу для отслеживания расписания в течение одного десяти минут и для сообщения о конфликтах планирования. Чтобы представить расписание, используйте массив bool размера 10; этот массив знает, занят ли какой-либо заданной минуты запланированной задачей или нет. Вы должны инициализировать все значения в этом массиве как false, указывая на то, что пользователь еще ничего не запланировал. 1. объявите массив нужного размера и типа. Инициализируйте его, как указано. Сделайте это, прежде чем продолжать.

Задача занимает ровно 1 минуту, но задачи будут повторяться в течение всего графика, как показано ниже. Задача будет иметь первый раз и интервал. Первый раз представляет собой целое число, которое указывает точную минуту, когда задача должна быть выполнена в первый раз. Интервал указывает количество минут до повторения задачи. Если интервал равен 0, задача не будет повторяться вообще (задача выполняется только один раз). Чтобы ввести эту задачу в наше расписание, мы будем устанавливать логическое значение в это время равным true. 2.Введите функцию, которая принимает массив, его размер и первый раз и интервал в качестве входов, и устанавливает соответствующие элементы массива в true.

  1. Ваша программа должна неоднократно предлагать пользователю ввести два целых числа для первого раза и интервала. Если введено отрицательное значение для любого целого числа, программа должна завершиться. В противном случае ваша программа должна продолжить установку соответствующих мест в массиве расписания в true (используйте вашу функцию!).

  2. Программа также должна проверять конфликты на этом пути. Конфликт возникает, если программа пытается запланировать новую задачу в местоположении в массиве расписания, для которого уже установлено значение true. Когда это произойдет, ваша программа должна напечатать на экране, что «КОНФЛИКТ ПРОСМОТРЕТСЯ В ВРЕМЕНИ Т», где 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. ваше условие цикла должно включать размер массива, так что Вы ничего не записываете
Смежные вопросы