Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вычисление пересечение времени 
:(
    Опции темы
ziga
Дата 18.3.2010, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 25.4.2007

Репутация: нет
Всего: 1



У меня есть 2 класа 

1 класс ресурс 

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ResursTest
{
    class Resource
    {
        public Condition[] ConditionList = new Condition[10];
        public int ConditionCount = 0;
        private string ResourseName;

        // Конструктор ресурса
        public Resource(string pResourseName)
        {
            ResourseName = pResourseName;
        }

        // Создаём для ресурса состояние
        public void CreateCondition(string pName, int pStart, int pEnd)
        {

            // Проверяем на пересечение времени между состояниями
            if (ConditionCount > 0)
            {
                if (ConditionList[ConditionCount - 1].end > pStart)
                {
                    MessageBox.Show("Время состояния не должно пересекаться");
                }
                else
                {
                    ConditionList[ConditionCount] = new Condition(pName, pStart, pEnd);
                    ConditionCount++;
                }
            }

            if (ConditionCount == 0)
            {
                ConditionList[ConditionCount] = new Condition(pName, pStart, pEnd);
                ConditionCount++;
            }
          
        }

        public override string ToString()
        {
            return ResourseName;
        }
    }
}



2 класс состояние 

Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ResursTest
{
    class Condition
    {
        public int start;
        public int end;
        public string Name;


        public Condition(string pName, int pStart, int pEnd)
        {
            Name = pName;
            start = pStart;
            end = pEnd;
        }

        public override string ToString()
        {
            return Name;
        }
    }
}



заполняю эти классы данными:

Код

            ResObject = new Resource("Ресурс 1");
            lbResource.Items.Add(ResObject);
            ResObject = new Resource("Ресурс 2");
            lbResource.Items.Add(ResObject);
            lbCondition.Items.Add("S1");
            lbCondition.Items.Add("S2");
            lbCondition.Items.Add("S4");

            ((Resource)lbResource.Items[0]).CreateCondition("S1", 1, 2);
            ((Resource)lbResource.Items[0]).CreateCondition("S2", 3, 5);
            ((Resource)lbResource.Items[0]).CreateCondition("S1", 6, 10);
            ((Resource)lbResource.Items[1]).CreateCondition("S1", 1, 7);
            ((Resource)lbResource.Items[1]).CreateCondition("S4", 8, 25);


Условие:

Даны ресурсы. У каждого ресурса есть несколько состояний.  Всего есть N типов разных состояний, каждое состояние может присутствовать у ресурса несколько раз. Каждое состояние характеризуется временем начала и временем конца. Пересекаться разные состояния в пределах одного ресурса не могут.  Необходимо найти промежутки времени, в которые все ресурсы находятся в одинаковом состоянии.
Пример:
Ресурс 1: S1(1,2), S2(3,5), S1(6,10)
Ресурс2: S1(1,7), S4(8,25)
Результат выполнений будет: S1(1,2), S1(6,7) т.к. оба ресурса в этом примере на промежутках времени (1,2) и (6,7) находятся в состоянии S1.

помогите найти алгоритм решения промежутков времени, в которые все ресурсы находятся в одинаковом состоянии
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.3509 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.