|
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
|
||||||
Строка: По букве получить численное представление и по числу получить соответствующую букву.20.08.2018, 09:54. Показов 3337. Ответов 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
Как получить численное значение выражения? Получить для каждого элемента максимальную дату и цену, соответствующую этой дате
Получить численное решение дифф. уравнения: проверьте программу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|