Конвертация в римские цифры и обратно в 1С

 

По мотивам комментариев к статье «Конвертация числа в различные системы исчисления в 1С» (спасибо пользователю kuzyara).

Функции для конвертации арабских цифр в римские и обратно.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Оценка статьи:
УжасноПлохоНеплохоХорошоОтлично (Пока оценок нет)
Загрузка...

Понравилась статья? Поделиться с друзьями:
Комментарии: 1
  1. Олег

    Функция ArabicToRoman(Знач пчАрабскоеЧисло) Экспорт
    мБуквы = СтрРазделить(» M CM D CD C XC L XL X IX V IV I», » «,Ложь);
    мЗначен = СтрРазделить(«1000 900 500 400 100 90 50 40 10 9 5 4 1″, » «,Ложь);
    сРимскоеЧисло = «»;

    Для чИндРимской = 0 По мБуквы.ВГраница() Цикл
    чЗначениеРимской=Число(мЗначен[чИндРимской]);
    Пока пчАрабскоеЧисло >= чЗначениеРимской Цикл
    сРимскоеЧисло = сРимскоеЧисло + мБуквы[чИндРимской];
    пчАрабскоеЧисло = пчАрабскоеЧисло — чЗначениеРимской;
    КонецЦикла;
    КонецЦикла;

    Возврат сРимскоеЧисло;
    КонецФункции

    Функция RomanToArabic(псРимскоеЧисло) Экспорт
    струкРимские = Новый Структура(«M, D, C, L, X, V, I», 1000, 500, 100, 50, 10, 5, 1);
    чСимволовРим = СтрДлина(псРимскоеЧисло);
    чАрабскоеЧисло = 0;

    Для чПозРим=1 По чСимволовРим Цикл
    Попытка
    чЗначениеРимской=струкРимские[Сред(псРимскоеЧисло, чПозРим, 1)];
    чЗначениеРимскойСледующей=?(чПозРим=чСимволовРим, 0, струкРимские[Сред(псРимскоеЧисло, чПозРим+1, 1)]);
    Исключение Возврат Неопределено КонецПопытки;
    Если чЗначениеРимской < чЗначениеРимскойСледующей Тогда
    чАрабскоеЧисло = чАрабскоеЧисло — чЗначениеРимской;
    Иначе
    чАрабскоеЧисло = чАрабскоеЧисло + чЗначениеРимской;
    КонецЕсли;
    КонецЦикла;

    Возврат чАрабскоеЧисло;
    КонецФункции

    Спасибо за алгоритм, оптимизировал :)

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: