Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 9

Узнать, пересекаются ли даты

01.03.2015, 16:07. Показов 2959. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, нужна помощь!
1. Надо дописать функцию Intersect, которая определяет, пересекаются ли два
диапазона значений.
2. И как можно повысить удобство пользования функцией Intersect в некоторых сценариях?


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
namespace Test
{
 class Program
 {
 class Range<T>
 where T : IComparable
 {
 public T Min { get; set; }
 public T Max { get; set; }
 static public bool Intersect(Range<T> range1, Range<T> range2)
 {
 ???;
 }
 }
 static void Main(string[] args)
 {
 Range<DateTime> range1 = new Range<DateTime>();
 Range<DateTime> range2 = new Range<DateTime>();
 var result = Range<DateTime>.Intersect(range1, range2);
 Console.ReadLine();
 }
 }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2015, 16:07
Ответы с готовыми решениями:

Узнать пересекаются ли объекты
Имеется куб с координатами: Начальная точка X=10,Y=10,Z=10 Конечная точка X=40,Y=40,Z=40 И имеется линия: Начальная точка...

Как узнать пересекаются ли окружности
Даны координаты центров двух окружностей и их радиусы, нужно узнать: 1. совпадают ли? 2. не пересекаются? 3. пересекаться ли в двух...

Как узнать пересекаются ли геометрические фигуры?
На форме рисую фигуры которые описываются Regionами Polygon = New Drawing2D.GraphicsPath() Polygon.AddPolygon(PointCollection.ToArray) ...

5
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
01.03.2015, 16:41
Цитата Сообщение от sorokinR Посмотреть сообщение
Надо дописать функцию Intersect
Copyright (C) Microsoft Corporation
C#
1
2
3
4
5
6
7
8
9
10
11
12
public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second) {
    if (first == null) throw Error.ArgumentNull("first");
    if (second == null) throw Error.ArgumentNull("second");
    return IntersectIterator<TSource>(first, second, null);
}
 
static IEnumerable<TSource> IntersectIterator<TSource>(IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer) {
    Set<TSource> set = new Set<TSource>(comparer);
    foreach (TSource element in second) set.Add(element);
    foreach (TSource element in first)
        if (set.Remove(element)) yield return element;
}
Цитата Сообщение от sorokinR Посмотреть сообщение
как можно повысить удобство пользования функцией Intersect в некоторых сценариях?
Вот здесь поподробнее. В каком именно виде вам неудобно её использовать?
Если что, опять же смотрите этот метод в LINQ - там всё как надо.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
01.03.2015, 16:45
sorokinR, напишите сначала для типа int, например, а там и обобщить сразу видно как можно.

Добавлено через 26 секунд
tezaurismosis, эмм, это вообще тут при чем? о_0
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
01.03.2015, 17:03
Psilon, ты о чём?

Добавлено через 1 минуту
А всё, понял. Не вчитывался в задание. Действительно мой ответ не подходит
1
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 9
02.03.2015, 06:17  [ТС]
В общем написал такое:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using System;
namespace Test
{
    class Program
    {
        class Range<T>
        where T : IComparable
        {
            public T Min { get; set; }
            public T Max { get; set; }
            public override string ToString() { return String.Format("[{0} - {1}]", Min, Max); }
            public Boolean IsValid() { return Min.CompareTo(Max) <= 0; }
            public Boolean ContainsValue(T value)
            {
                return (Min.CompareTo(value) <= 0) && (value.CompareTo(Max) <= 0);
            }
            public Boolean IsInsideRange(Range<T> Range)
            {
                return this.IsValid() && Range.IsValid() && Range.ContainsValue(this.Min) && Range.ContainsValue(this.Max);
            }
 
            public Boolean ContainsRange(Range<T> Range)
            {
                return this.IsValid() && Range.IsValid() && this.ContainsValue(Range.Min) && this.ContainsValue(Range.Max);
            }
 
            static public bool Intersect(Range<T> range1, Range<T> range2)
 {
 
     if (this.ContainsRange(range1) && this.ContainsRange(range2))
         return true;
     else return false;
 
 }
        }
        static void Main(string[] args)
        {
            Range<DateTime> range1 = new Range<DateTime>();
            Range<DateTime> range2 = new Range<DateTime>();
            var result = Range<DateTime>.Intersect(range1, range2);
            Console.ReadLine();
        }
    }
}
но сыпятся ошибки, что this не может использоваться в инициализаторах статических свойств. А если убрать static из static public bool Intersect, то ошибка, что нужна ссылка на объект. Как это побороть?
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
02.03.2015, 10:11
Лучший ответ Сообщение было отмечено Psilon как решение

Решение

логично, в статике ведь нет this, логика совсем иная
C#
1
2
3
4
static public bool Intersect(Range<T> range1, Range<T> range2)
{
   return range1.ContainsRange(range2) || range2.ContainsRange(range1); 
}
Добавлено через 49 секунд
Ну и с названиями поработайте - Range.ContainsRange - это масло масляное, к примеру
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2015, 10:11
Помогаю со студенческими работами здесь

Как узнать количество дней между значением текущей даты и даты в поле dateTimePicker?
есть некое значение поля dateTimePicker 1. как работать например с месяцем, в этом значении (сравнивать его с другими)? 2. как узнать...

Определить взаимное расположение двух заданных прямоугольников (пересекаются, не пересекаются, касаются)
Заданы координаты вершин двух прямоугольников. Определить их взаимное расположение: пересекаются, не пересекаются, касаются, принадлежит. ...

Определить, пересекаются ли параболы y = ax2+bx+c и y = dx2+mx+n. Если пересекаются, то найти точку пересечения
Определить, пересекаются ли параболы y = ax2+bx+c и y = dx2+mx+n. Если пересекаются, то найти точку пересечения

Указать, совпадают прямые, параллельны или пересекаются, если пересекаются, то найти точку пересечения
Указать, совпадают прямые, параллельны или пересекаются, если пересекаются, то найти точку пересечения 2х-5у-5=0 и х=1+t, у=-9-t

Составить программу, определяющую, пересекаются ли данные прямоугольники, и вычисляющую площадь общей части, если они пересекаются
Два прямоугольника, расположенные в первом квадранте, со сторонами, параллельными осям координат, заданы координатами своих левого верхнего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru