36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
|
Определить какая из версий программы старше13.01.2019, 21:16. Показов 9285. Ответов 18
Метки нет Все метки)
(
Задача выглядит следующим образом: Есть две строки неограниченной длины, содержащие версии программ. Версия программы – это строка из 4 чисел, разделенных точками. Числа целые положительные или ноль. Могут начинаться с нулей. Обработка должна определить, какая из версий старше (без использования встроенных функций). Примеры версий: ∙ 8.1.13.41 ∙ 8.1.009.125
Вот все вроде бы просто. Понятно, что сравнивать нужно "по-разрядно", начиная со старшего "разряда". В java я бы разбил строку сплитом и прошелся бы по массиву, сравнивая значения элементов. Но написано - "без использования встроенных функций". Я теряюсь в догадках. Есть у кого-нибудь мысли?
0
|
13.01.2019, 21:16 | |
Ответы с готовыми решениями:
18
Как сделать приложение для версий framework 2.0 и старше Какая из версий c\c++ совметима с windows 7 Какая разница в линейках версий Apache 1.3.x; 2.0.x и 2.2.x? |
![]() ![]() |
|
13.01.2019, 21:23 | |
Njula, это вы теоретически придумали или для какой-то среды разработки конкретно требуется?
Добавлено через 4 минуты В C# есть класс Version для этого.Абстрагируясь от него, можно номер версии перевести в число и просто сравнить: Если каждый компонент занимает 1 байт, то 8 * 224 + 1 * 216 + 13 * 28 + 41 = 134352169 8 * 224 + 1 * 216 + 009 * 28 + 125 = 134351229 Добавлено через 49 секунд Если компоненты по 16 бит, как в Windows, то умножать надо на соответственно бОльшие числа.
0
|
36 / 3 / 0
Регистрация: 21.05.2018
Сообщений: 111
|
||
13.01.2019, 22:01 [ТС] | ||
Rius, спасибо за ответ!
8113041 и 8109125, которые легко сравниваются. Что вы думаете?
0
|
![]() ![]() |
|
13.01.2019, 22:11 | |
Njula, это прокатит только тогда, когда компоненты фиксированной длины.
У вас же 13 и 9, 41 и 125. Так не сравнить.
0
|
![]() |
|
13.01.2019, 22:11 | |
Насколько я понимаю, нужно реализовать две собственные ф-ции:
1) Взять от строки подстроку начиная с позиции N до знака-разделителя (в данном случае до точки) 2) Посимвольно сравнить две строки цифр, начиная с конца строки К исходной строке добавляем символ точки, разбиваем строку на четыре, сравниваем. Rius, скорее всего не годится, потому что "Есть две строки неограниченной длины"
1
|
![]() ![]() |
|
13.01.2019, 22:14 | |
Я ни разу не видел строки версии неограниченной длины.
В Windows так вообще отведено под это 64 бита, т.е. 4 числа от 0 до 65535. Но если надо совсем так, то выбираем компоненты из каждой строки от точки до точки, преобразуем в целые числа. И сравниваем. До первого неравенства.
0
|
![]() ![]() |
|
13.01.2019, 22:22 | |
Смотря до какого уровня они считают встроенными или нет.
Можно и split, а можно и перебором символов. Да, кстати, посимвольное сравнение с конца строки тоже пойдёт.
1
|
![]() |
|
13.01.2019, 22:24 | |
off: Я тоже никогда не видел живьем кита, но если заказчику нужно нарисовать кита, я ему нарисую кита, а не знакомую соседскую собаку.
0
|
![]() ![]() |
|
14.01.2019, 00:00 | |
Кликните здесь для просмотра всего текста
0
|
Модератор
![]() 3107 / 2255 / 467
Регистрация: 26.03.2015
Сообщений: 8,799
|
||||||||||||
14.01.2019, 10:10 | ||||||||||||
Строки разбивать не нужно - лишняя работа. Просто сравнить строки посимвольно (так как '.' < '0'):
Добавлено через 5 минут Можно так написать (смысл тот же):
0
|
![]() ![]() |
||||||||
14.01.2019, 10:15 | ||||||||
Так как числа могут быть записаны по разному, а не только фиксированным количеством знаков с присутствием ведущих нулей, то как строки их сравнивать нельзя.
2
|
Модератор
![]() 3107 / 2255 / 467
Регистрация: 26.03.2015
Сообщений: 8,799
|
||||||
14.01.2019, 10:32 | ||||||
Rius,
Вижу проблему с ведущими нулями. Для решения, достаточно их пропускать.
0
|
![]() ![]() |
|
14.01.2019, 10:32 | |
Для простого сравнения, например, хорошо подходит формат даты ISO-8601 YYYY-MM-DDThh:mm:ss. Компоненты выстроены так, что даты можно сравнивать как строки. Спецом для этого
![]()
0
|
![]() ![]() |
||||||||
14.01.2019, 10:41 | ||||||||
Добавлено через 4 минуты Но если ещё раз посмотреть, то вот: Первое должно быть равно. А второе и третье - точно нет.
Для учтения всего этого код обрастает всё большими костылями, и split уже не кажется таким уж лишним...
0
|
14.01.2019, 10:41 | |
Помогаю со студенческими работами здесь
19
Какая из версий убунту поддерживает автоматическое переключение?
Выборка из БД мужчин от 60 и старше, женщин от 55 и старше на Foxpro 2.6 Поиск программы Maple версии 9.5 и старше Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
|
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг.
Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя.
Странные серые краски проникают и. . .
|
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|