3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
||||||
1 | ||||||
задача на римскую систему счисления08.12.2011, 23:12. Показов 35506. Ответов 18
Метки нет (Все метки)
Ввести число римскими цифрами (менее 4000 в арабской записи), учитывая следующие обозначения:
I - 1, V - 5, X - 10, L - 50, C - 100, D - 500, M - 1000. Проверить правильность ввода исходных данных и напечатать это число арабскими цифрами. у меня получилось как-то вот так:
Кому не сложно, помогите пожалуйста. Желательно доработать этот код)) Заранее спасибо! Добавлено через 20 часов 13 минут up))))) Добавлено через 3 часа 9 минут up.....
1
|
08.12.2011, 23:12 | |
Ответы с готовыми решениями:
18
Преобразование в римскую систему счисления Перевод чисел из файла в римскую систему счисления Перевод с арабской на римскую сисстему счисления Программа перевод чисел из арабской систеиы счисления в римскую |
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
||||||
09.12.2011, 06:22 | 2 | |||||
не претендую на оригинальность решения. просто понравилась ваша задача и решил попробовать.
заметка. к исключением которые вы предлагаете я добавил еще и VX, LC и DM. Думаю такого тоже не может быть результат получился такой:
1
|
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
|
12.12.2011, 23:46 [ТС] | 3 |
greeezz, я сейчас потестила Ваш код. у меня запись вида "VIV" пропускает. Хотя она, по идее, невозможна. пыталась сама поправить, еще больше запуталась, так ничего и не получилось.
Не очень понятно, что считает переменная и почему здесь она равняется именно трем. И не понятно, зачем здесь перед isCorrect стоит ! Надеюсь, не очень завалила глупыми вопросами?
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
12.12.2011, 23:52 | 4 |
Перевод римских чисел в арабские и наоборот
там есть вроде как рабочий код. если с stl дружите, то поймете что так и как. + пара ссылок на другие решения. хм. VIV прожевывает. надо подправить
0
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
|
12.12.2011, 23:53 | 5 |
вопросы не глупые. на самом деле мое решение не очень очевидное. думаю есть варианты намного проще. я вам отвечу на ваши вопросы чуть позже. думаю вернусь часа через полтора и отвечу.
0
|
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
|
12.12.2011, 23:53 [ТС] | 6 |
DU, stl?
эх, как много нынче люди ждут от девушки) знать бы еще что stl такое....)
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|||||||||||
13.12.2011, 00:27 | 7 | ||||||||||
Я поправил пример. добавил пару камментов. Скопируйте все себе и попробуйте запустить.
В main идет заполнение эталонных данных. Это пары - римское число и десятичное. В случае плохих чисел - идут пары с BAD_VALUE. Все это засовывается в динамичесский массив и потом каждая пара тестится в ф-ии CheckConversion. Если результат конверсии совпадает с эталоном - все ок, иначе выводится ошибка. само преобразование построено на заранее определенной таблице и трех ф-иях.
1
|
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
|
13.12.2011, 00:30 [ТС] | 8 |
DU, спасибо за проделанную работу, но у меня стойкое ощущение что я этот код никогда не пойму. постараюсь, конечно, разобраться, но вряд ли мозгов хватит
если учесть что на лекциях нам прочитали только циклы, массивы и чуть начали строки..
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
13.12.2011, 00:47 | 9 | |||||
чтобы понять это вам нужно откопать самостоятельно инфу по следующим штукам:
Потраченное на изучение всего этого время еще окупится.
0
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
|||||||||||||||||||||
13.12.2011, 01:36 | 10 | ||||||||||||||||||||
данная переменная считает количество повторение текущей римской цифры.
замените на код ниже. Будет тот же результат. Тут по идее проверяется что одна и таже чифра не может повторяться более трех раз подряд.
!isCorrect это то же самой что и isCorrect == false насчет последовтельности VIV поставил временную заплатку в функцию.
Я пересмотрю в свободное время код. возможно передаю на более простой и понятный.
1
|
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
|
13.12.2011, 09:24 [ТС] | 11 |
greeezz, вроде бы все понятно. спасибо огромное за помощь!)
0
|
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
|
14.12.2011, 21:27 [ТС] | 12 |
greeezz, я тут отчет села делать по этой программе. и немного не поняла эту строчку
т.е. тут посимвольный ввод получается? (или как его назвать). Вводим символ, выполняем весь цикл, потом опять вводим символ и снова выполняем цикл? и так до тех пор, пока не будет нажат Enter? я правильно понимаю?
0
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
||||||
15.12.2011, 02:44 | 13 | |||||
здесь с каждой итерацией сначала получается сивол из входящего потока и записвается в переменную next. Затем если значение переменной next не равное концу строки то выполняется итерация цикла.
ПаЗитиФкА, я написал другу версию программы. основные функции остались те же. изменилась логика чтения римского числа из входного потока и проверка последовательности. К сожалению старая версия программы работает не корректно. К примеру в старой версии ошибочное число XMMXMXX будет считаться правильным. ТЕСТЫ
TRUE 4 IV 1 9 IX 1 40 XL 1 90 XC 1 400 CD 1 900 CM 1 2011 MMXI 1 2009 MMIX 1 99 XCIX 1 46 XLVI 1 31 XXXI 1 8 VIII 1 888 DCCCLXXXVIII 1 1668 MDCLXVIII 1 1989 MCMLXXXIX 1 3999 MMMCMXCIX 1 583 DLXXXIII 1 32 XXXII 1 2010 MMX 1 21 XXI 1 3 III 1 FALSE XXXX 0 XXIXX 0 HLL 0 IIV 0 VVX 0 VXV 0 IVI 0 XLX 0 LCL 0 IVV 0 IXX 0 XLL 0 XCC 0 CDD 0 CMM 0 LXL 0 VIV 0 DCD 0 XXIXX 0 MDXCLXIVIL 0 MDCILXIVIIX 0 MDMMCLXIVICI 0 Я написал комментарии в непонятных на мой взгляд местах кода. посомтрите может этот вамриант вам больше понравится. Ну а если что непонятно то спрашивайте конечно. КОД ПРОГРАММЫ
2
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
|
15.12.2011, 02:57 | 15 |
0
|
237 / 210 / 29
Регистрация: 08.06.2011
Сообщений: 467
|
||||||
15.12.2011, 15:09 | 16 | |||||
вот на C, без дополнительных правил, т.е. позволяет написать одно число разными способами
может пригодится...
0
|
3 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 51
|
|
15.12.2011, 20:39 [ТС] | 17 |
greeezz, спасибо большое за подробное объяснение! я сдала старые вариант - преподавательский тест программа прошла и ладно. с новым тоже разобралась, в целом все понятно
0
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
|
15.12.2011, 21:15 | 18 |
да тест преподавателя не главное. главное результат работы. даже если результат не правильный, то это тоже очень хороший результат - если разобраться почему он не правильный.
Не по теме: к тому что преподователи не всегда мягко говоря правы...
0
|
114 / 114 / 13
Регистрация: 29.04.2010
Сообщений: 240
|
||||||
15.12.2011, 21:28 | 19 | |||||
До кучи, boost::spirit версия
2
|
15.12.2011, 21:28 | |
15.12.2011, 21:28 | |
Помогаю со студенческими работами здесь
19
Рекурсия: перевод целого числа из десятичной системы счисления в 9 систему счисления Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления Перевод натурального числа из десятичной системы счисления в систему счисления по основанию Перевод числа из восьмеричной системы счисления в шестнадцатеричную систему счисления Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |