|
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 19
|
|
Перевести римские числа в арабские, и наоборот16.05.2016, 22:05. Показов 9012. Ответов 12
Метки нет (Все метки)
0
|
|
| 16.05.2016, 22:05 | |
|
Ответы с готовыми решениями:
12
Перевести арабское число в римское и наоборот.
|
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
|
| 16.05.2016, 22:29 | |
|
Свой код имеется?
Переводить арабские в римские несложно, зная правила составления последних. Для перевода римских в арабские лучше использовать "таблицу переходов" (точное название не помню), особенно если нужна проверка правильности ввода. Должны были давать подобную теорию. Делал перевод давно (консольное приложение), но дискета с кодом ушла к одногруппнику и не вернулась. Может быть вспомню молодость и попробую сделать снова. Но на меня лучше особо не надеяться.
0
|
|
|
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 19
|
|
| 16.05.2016, 22:56 [ТС] | |
|
Да нету теории. Да и кода нет. Пытался что то найти, а все что откопал это в C#, C++ и сраном паскале...Если поможешь, буду очень признателен)
0
|
|
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
||||||
| 17.05.2016, 02:35 | ||||||
|
Арабское в римское:
3
|
||||||
|
0 / 0 / 0
Регистрация: 16.05.2016
Сообщений: 19
|
|
| 17.05.2016, 15:34 [ТС] | |
|
Ну это в С++, а надо в билдере.
0
|
|
| 17.05.2016, 15:37 | |
|
0
|
|
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
|||||||
| 17.05.2016, 17:32 | |||||||
Сообщение было отмечено index50 как решение
РешениеТак бы и сказал, что тебе нужно полностью готовое. Неужели и правда трудно поместить на форму "кнопку" Button, "поле редактирования" Edit и "текстовую метку" Label? Плюс написать в обработчике нажатия кнопки одну строку (с помощью двойного клика по нужному событию)? Чтобы получилось подобное (верхние строки до функции ArabicToRoman создаются автоматом, самому их писать не нужно):
Раньше, когда начинали писать код с консольных приложений в древних уже IDE и все нужно было указывать самостоятельно, такие нулевые знания очень редко встречались. А если даже "формошлепством" заниматься не получается, то о каком коде может идти речь.
2
|
|||||||
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
|
| 17.05.2016, 20:46 | |
|
Я не поленился и нашел некоторые старые записи, где я, будучи студентом, на бумаге решал задачу, указанную в заголовке темы, лет 15-16 назад. Пытался не один день, но в итоге сделал "таблицу переходов", нужную по условию для решения (возможно, финального варианта нет во вложении, оригинал либо не нашел, либо он не сохранился на бумаге). А это всего лишь одно из заданий зачетной лабораторной работы.
Вот так мы тогда учились (вполне успешно), когда интернет был медленный и малодоступный, компьютеры дорогие и не сильно производительные, думали головой, а не искали халявы на форумах (про них, к счастью, ничего не знали, пусть даже они и были).
2
|
|
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
||||||
| 19.05.2016, 03:11 | ||||||
Сообщение было отмечено BRcr как решение
Решение
Добавил перевод римских чисел в арабские (функция RomanToArabic).
Имеется проверка ввода (EditRomanKeyPress) и "правильности" римского числа (с помощью "таблицы переходов" trans_table). Один нюанс - допустимо размещение подряд более трех символов M. Тут либо нужно изменять таблицу, либо не вводить соответствующие числа (больше 3999). Код (вместе с ArabicToRoman):
1
|
||||||
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
|
| 19.05.2016, 03:22 | |
|
Можно было использовать другой ("стандартный") способ проверки "правильности" римского числа (http://mech.math.msu.su/~shvet... deas.xhtml, см. таблицу), но он мне кажется не таким интересным.
0
|
|
|
Модератор
|
||||||
| 19.05.2016, 08:46 | ||||||
|
gunslinger, немного не догнал логику твоей таблицы переходов... Ну, да и пес с ней, не мне оно надо
![]() Просто когда-то делал такой перевод (без проверок на правильность составления римского числа), сейчас вот нашел в своем старье и переиначил с Delphi...
1
|
||||||
|
place status here
3187 / 2221 / 640
Регистрация: 20.07.2013
Сообщений: 6,017
|
|
| 19.05.2016, 18:17 | |
|
Я тоже поначалу (давно) пытался сделать схожим способом (скриншот №4 [левый нижний] из 9-го поста), но сейчас он кажется не сильно "оптимальным" в смысле его написания.
А принцип таблицы прост (последний скриншот из поста №9 - итоговая таблица). Проверка допустимых сочетаний римских цифр в числе. "Заголовки" столбцов - допустимые символы (от I до M). Проверяем римское число с конца. Допустим, у нас есть число MCXIV. V - смотрим второй столбец, первую строку. В ячейке 5. Значит, переходим в строку №5. Далее I - пятая строка, первый столбец. Число 12, идем на строку №12. И т. д. Если после прохождения всего римского числа по символам последнее значение в ячейке не 18 и не 0 (< 18 и > 0) - то у нас "правильное" римское число и можно его переводить в арабское. Если 18 - то "неправильное". 0 - пустая строка (тоже неправильное число). Раньше я делал еще с учетом варианта "вообще не римское число", но сейчас среда достаточно просто позволяет ограничить ввод "левых" символов. Причем используемая таблица уже "нормализована" - убраны лишние и повторяющиеся строки, ибо изначально учет все сочетаний (групп) цифр выдавал таблицу строк на 60, если не больше. Хороший был у нас преподаватель по информатике и смежным предметам в ВУЗе. По алгоритмам всяким натаскивал. Много чего интересного дал. Те же ханойские башни с решением в "три" строки (задолго до Википедии), причем рабочий код еще долго мне представлялся чем-то за гранью понимания. P.S.: здесь https://ru.wikipedia.org/wiki/... 1%80%D1%8B (в конце) есть несколько реализованных способов перевода арабского числа в римское, но я сильно не вникал. Добавлено через 19 минут Небольшая поправка: не "V - смотрим второй столбец, первую строку", а "V - смотрим второй столбец, нулевую строку". Слева на последнем скриншоте из поста №9 нумерация строк идет с нуля.
2
|
|
| 19.05.2016, 18:17 | |
|
Помогаю со студенческими работами здесь
13
Нужно перевести римские цифры в арабские Преобразовать арабские числа в римские
арабские в римские Арабские в римские Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|