| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > перевод чисел из десятичной системы счисления |
| Автор: simка 27.11.2004, 22:52 |
| Написать прогу перевода чисел из десятичной системы счисления в Римскую. Исходное число считывается из одного файла, а результат записывается в другой файл. I-1;V-5;X-10;L-50:C-100;D-500;M-1000 |
| Автор: Intro 28.11.2004, 19:21 |
| Такая прога на олимпиаде была, там не решил, но дома разобрался... короче считывай char[] потом переводи в число, дальше разбирай с лево на право --- естественно перед элементом может стоять I поэтому обязательно это учитывай... |
| Автор: chipset 28.11.2004, 20:00 |
| Модератор: Название темы должно отражать ее суть! |
| Автор: sergejzr 28.11.2004, 21:32 | ||
| Вот написал в обе стороны Комментировать не стал, так как вроде и так всё ясно Кстати, я конечно не всё сам выдумывал уже готового в инете полно
|
| Автор: Alexandr87 29.11.2004, 14:25 |
| Короче код написанный для перевода рим->дес., работает в некоторых случаях не корректно, не предусмотрен случай когда идет вычитание при стоящем справа меньшем числе: Так XIX - не 21, а 19. Алгоритм следующий: (писать код не буду, т.к. некогда, да и опыта мало, чтоб сделать это быстро и понятно) 1.Рассматриваем введеную строку с права налево. 2.Пишем функцию проверки(но можно включить и main()), которая будет принимать два char'a(можно указатели), и выдавать 1, если первый в римской сс, больше второго. Затем, можно воспользоваться тем, что предложил sergej.z , но только ставить условие, мол если следующий за текущем символом больше текущего, то не прибавлять десятичный эквивалент данного char'a, а отнимать его. |
| Автор: Alexandr87 29.11.2004, 15:24 | ||
Вощем вроде вот, контроль вводимых значений делай сам
|