|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
||||||
Строка: По букве получить численное представление и по числу получить соответствующую букву.20.08.2018, 09:54. Показов 3356. Ответов 11
Метки нет (Все метки)
Привет. Задача такая: необходимо реализовать два метода, один из которых по введенной букве возвращал ее численное представление, а другой метод наоборот, по введенному числу возвращал соответствующую букву. Например:
- ввожу "A" - получаю 1; ввожу "AA" - получаю 27; ввожу "AAA" - получаю 703. Для чисел тоже самое, ввел 703 - получил "AAA". Сначала я реализовал через LinkedHashMap следующим образом:
Проблема в том, что я выяснил, нет предела в последовательности букв. То есть я считал, что максимальный порядок - это три: "ZZZ". Но Оказалось, что можно ввести, например, "AAZX" и надо получить тоже его число. Подскажите, как лучше все это дело оформить? Продолжать с коллекцией работать, а именно: создать еще один цикл, в котором я буду просто четвертую букву присоединять, как и в двух других циклах, или как-то по-другому шаманить? Спасибо. P.S. Если нужен пример кода для метода, возвращающего букву по числу, я конечно скину, но там тот же самый код, что и в скинутом примере.
0
|
||||||
| 20.08.2018, 09:54 | |
|
Ответы с готовыми решениями:
11
Как получить доступ к каждой букве строки?
|
|
Автоматизируй это!
|
|||||||
| 20.08.2018, 11:25 | |||||||
Сообщение было отмечено Kirillgo как решение
Решениесразу скажу писал на скорую руку и на коленке, мог что-то упустить
Добавлено через 29 минут Kirillgo, кстати метод возврата числа по буквам еще короче и проще получается, чем intToChars, но оставляю тебе возможность реализовать самому
0
|
|||||||
|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
|||
| 20.08.2018, 12:03 [ТС] | |||
|
Welemir1, спасибо, но вот этот прикол с вычислениями пока в ступор привел
![]() Лан, буду пробовать разбирать. Мой вариант действительно не подходит, но другое просто в голову не лезет. Добавлено через 5 минут Welemir1, работает....а как Вы это сделали? Жесть, я в шоке прост. Я долбился пару дней над этой задачей и лучшее, что пришло мне в голову - использовать LinkedHashMap...и хотя я интуитивно понимаю, что это не вариант, потому что решение мое не подходит для любого случая, но вот как стена в голове... ![]() Добавлено через 8 минут Welemir1, так, а я бы хотел задать пару вопросов по коду, если можно: 1. 2. Про исключительный случай я не совсем понял, это когда получаем букву "Z"?
0
|
|||
|
Автоматизируй это!
|
|||||
| 20.08.2018, 12:12 | |||||
|
Kirillgo, когда долго над одной задачей бьешься - это бывает, надо иногда отвлекаться, я вот когда зависаю -иду сюда на форум решать ваши задачки)))
Ты просто пойми для себя, что есть некий алгоритм получения как букв по числу, так и наоборот, надо просто его найти. Так как результаты работы тебе известны (1="А", 27="АА"), то начинаешь по-маленьку писать код и искать закономерности. Как вариант сразу написать тест вот как у меня (он естественно будет падать) и по мере написания кода метода, все большее количество строчек будет выполняться, пока не выполнятся все. Добавлено через 6 минут потом нам нужно знать сколько раз этот алфавит укладывается в нашем числе, для 27 это 1, то есть первая буква, тоже А получаем А+А=АА Добавлено через 2 минуты
0
|
|||||
|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
||||||
| 20.08.2018, 12:37 [ТС] | ||||||
|
Welemir1, так, я понял. А вот вопрос по поводу получения числа по букве. Я начал вот так:
А дальше как рассуждать? Как мне по числу 27 обратиться к "AA"? Добавлено через 2 минуты Может так: взять длину входной строки, если она больше 1 и меньше 3, то это двухзначная строка...но я так не смогу подбирать, наверное, у меня может быть строка длинной 5 или 6. На все числа не переберу варианты...
0
|
||||||
|
Автоматизируй это!
|
|
| 20.08.2018, 13:26 | |
|
Kirillgo, нужно найти закономерность, а не просто наугад пытаться.
Разбиваем слово по букве и начиная с последней начинаем считать. Последняя нам просто даст индекс числа, скажем для А -1. Далее с каждой новой буквой (все ближе к началу) прибавляем к общему результату умножение индекса буквы в массиве на 26^номер буквы с конца (скажем для предпоследней 26^1=26, для предпредпоследней 26^2 и так далее) ТО есть для АА берем последнюю А, она первая в алфавите, значит к результату прибавляем 1. 0+1=1 Берем вторую А, ее номер опять же 1, но умножаем на 26. Прибавляем к результату 26. Получаем 26+1=27 вот такой цикл тебе надо написать, можно в 8 строк уложиться и не надо перебирать варианты
0
|
|
|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
|
| 20.08.2018, 15:14 [ТС] | |
|
Welemir1, т.е. ввожу я "AAZX", это 18952 должно получится. Я делаю так: X - 24, Z - 26, A -1. Тогда с конца иду: 24 + 26*26*2 + 3 + 4, так я понимаю? Походу нет, потому что такое число не выходит(
0
|
|
|
Автоматизируй это!
|
|
| 20.08.2018, 16:16 | |
|
Kirillgo, я же выше писал про 26 в степени индекса буквы с конца)
AAZX=24 (номер Х в алфавите) + 26(индекс Z)*26 (26 в степени 1) + 1 (индекс А)*26*26 (26 в степени 2)+1(индекс А)*26*26*26 (26 в степени 3)= = 24+676+676+17576=18952 если будет больше букв то там дальше будет 26 в четвертой степени, пятой и так далее. Вот тебе и алгоритм, осталось написать.
0
|
|
|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
||||||
| 21.08.2018, 11:36 [ТС] | ||||||
|
Welemir1, спасибо Вам, все сработало. У меня было в задании сказано про еще один метод, возвращающий соседнюю букву по отношению к той, которую передаем в аргументе. Я в принципе через вызовы первых двух методов его оформил да и все. А по букве найти его номер вот так сделал:
0
|
||||||
|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
|||||||||||
| 21.08.2018, 13:04 [ТС] | |||||||||||
|
Welemir1, можно еще вопрос не по этой теме? Я реализую свою коллекцию (другое задание), в ней надо реализовать свой итератор. Проблема возникает, когда я пытаюсь переопределить метод remove(). В нем я хочу удалить элемент по индексу, который возвращает метод next(). Вопрос в следующем, как мне узнать, был ли вызван метод next() уже, чтобы выбросить исключение, и как мне узнать, что я вызвал remove() дважды подряд? Я пока что итератор сделал вот так:
![]() P.S. Коллекция типа ArrayList. Но без наследования от данной реализации.
0
|
|||||||||||
|
Автоматизируй это!
|
||
| 21.08.2018, 13:21 | ||
|
2
|
||
| 21.08.2018, 13:21 | |
|
Помогаю со студенческими работами здесь
12
Как получить численное значение выражения? Получить для каждого элемента максимальную дату и цену, соответствующую этой дате
Получить численное решение дифф. уравнения: проверьте программу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|