@p4p

Как найти количество цифр между двумя заданными?

Пытаюсь определить количество месяцев между двумя датами. Встроенные функции не подходят, так как не работают как мне нужно с неполными месяцами.
Известны месяца 3 и 12, как узнать сколько между ними цифр? 1 2 3 4 5 6 7 8 9 10 11 12 как мне программно на c# поймать этот промежуток?
  • Вопрос задан
  • 10013 просмотров
Решения вопроса 1
@p4p Автор вопроса
Не знаю, за что меня заминусовали, вот написал простенькую функцию:

public int monthInterval(int fMonth, int sMonth)
        {
            int f = fMonth + 1;
            int s = sMonth - 1;

            int buffer1 = 12 - (f - 1);

            int buffer2 = 12 - s;

            int buffer3 = buffer1 - buffer2;

            int monthInterval = buffer3;

            return monthInterval;
        }
Ответ написан
Пригласить эксперта
Ответы на вопрос 9
@egorinsk
Думаю, здесь нужен серьезный матанализ, может быть попробовать поискать знакомого математика?
Ответ написан
Комментировать
@Archet
Я где-то видел библиотеку для этого.
Ответ написан
Комментировать
Dimond17
@Dimond17
в данном примере правильный ответ — 10?
Ответ написан
Комментировать
brevis
@brevis
Используй API Wolframalpha.com.
Ответ написан
Встроенная функция вычитания подойдет для этого =)

N — первое число
M — второе число
количество цифр между ними равно (M-N-1)
проверка: N = 3, M = 12, тогда M-N-1=12-3-1=8
Ответ написан
AxisPod
@AxisPod
Если кол-во чисел, то выше сказали уже. Если именно цифр, то что-то подсказывает, что не очень сложно.

Берем кол-во цифр в граничных числах.
И тут у нас 2 варианта по сути:
— Кол-во цифр равно.
— Кол-во цифр не равно, в этом случае здесь обязательно есть крайние поддиапазоны и возможно 1 и более диапазонов между ними. Диапазоны — это набор чисел с одним кол-вом цифр.

1й вариант.
(правое значение — левое значение + 1) * кол-во цифр для диапазона

2й вариант подробнее.
Для крайних диапазонов кол-во цифр будет что-то типа, для левого: (максимальное число с текущим кол-во цифр — левое значение + 1) * кол-во цифр для диапазона, для правого для правого (текущее значение — минимальное число с текущим кол-во цифр + 1) * кол-во цифр для диапазона.
Ну и для средних в цикле (максимальное число с текущим кол-во цифр — минимальное число с текущим кол-во цифр + 1) * кол-во цифр для диапазона).

Кол-во цифр для диапазона — это кол-во цифр для 1го числа из диапазона чисел с одним кол-во цифр.

Если еще надо будет учесть к примеру пробелы, то их можно посчитать как в 1м варианте.

Что-то такое мне подсказывает мой больной мозг не вдаваясь вообще в математическую теорию.

P.S. писал с просони, может местами звучать коряво.
Ответ написан
Комментировать
aktuba
@aktuba
Может не в тему, но вроде как в гугле много решений данной задачи: bit.ly/ZKLKIb Чем они не подходят? Вот, для примера: dkomanov.livejournal.com/37861.html
Ответ написан
Комментировать
@sergeyZ
Хорошая библиотека для работы с промежутками времени.

http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET
Ответ написан
Krypt
@Krypt
pastebin.com/ZgAFeL0R
Вот мой велосипед. Правда он написан на Obj-C, но перевести, думаю, сможете — в целом фреймворки довольно похожи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы