Принцип перевода арабских чисел в римские
Калькулятор
Перевод любых чисел от 1 до 3999 в римские числа и определение века для указанного года.
Года римскими цифрами. Таблица
Таблица соответствия годов в арабской и римской записи в диапазоне от 1890 до 2020 года.
Века римскими цифрами
Таблица соответствия года и века римскими цифрами в диапазоне от 1 до 2100 года.
Перевод арабских чисел в римские
В римском исчислении используют всего семь заглавных букв латинского алфавита.
Натуральные числа записываются при помощи повторения этих цифр.
При этом, если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая стоит перед большей, то меньшая вычитается из большей (принцип вычитания).
Последнее правило применяется только для исключения четырёхкратного повторения одной и той же цифры.
Некоторые из цифр (I, X, C, M — единицы в соответствующих разрядах) могут повторяться, но не более трёх раз подряд.
Принцип вычитания применяется только к шести числам:
С помощью римских цифр можно записать любое целое число, но не более 3999 (MMMCMXCIX).
В качестве примера это число и рассмотрим. Выделяем разряды — MMM’CM’XC’IX:
- MMM — Три подряд символа 1000, т.е. это запись числа 3000
- CM — Единица в разряде сотен стоит перед десятью в разряде сотен, т.е. применяется принцип вычитания. Это запись числа 900
- XC — Единица в разряде десятков стоит перед десятью в разряде десятков, т.е. применяется принцип вычитания. Это запись числа 90
- IX — Единица стоит перед десятью, т.е. применяется принцип вычитания. Это запись числа 9
В сумме получается 3000 + 900 + 90 + 9 = 3999.
Конвертер арабских в римские цифры C ++ — циклов проверки входных данных
Цель этой программы состоит в том, чтобы взять арабское число и вернуть римское число равного числа. он должен отклонять ввод меньше 0 и больше 3999, но также заканчиваться вводом ЛЮБОГО ОТРИЦАТЕЛЬНОГО НОМЕРА. Также требуется вводить ошибку при вводе буквы вместо целого числа. (совершенно невежественен в этой части ?!)
Мой вопрос заключается в том, в каком порядке должны находиться эти условные выражения, чтобы программа не просто возвращала неверный ввод для отрицательного числа, а заканчивала программу.
Решение
Возможное решение с минимальным рефакторингом вашего текущего кода:
Другие решения
Пробуй ловить блоки (для ловли исключений вы знаете, что ваша программа должна обрабатывать)
СТД :: стои функция из библиотеки cpp для преобразования строки в целое число
Надеюсь, это поможет, дайте мне знать, как это происходит.
Я пересмотрел начало основного метода и начало цикла while.
Но я хотел бы также предоставить альтернативную реализацию преобразования строки (из http://rosettacode.org/wiki/Roman_numerals/Encode#C.2B.2B ):
Я хотел бы предложить вам этот код C ++ 14:
Перевод римских чисел в арабские и наоборот
Я в Си программирую недавно, помогите пожалуйста решить.
Разработать программу для перевода чисел, записанных римскими цифрами в числа, записанные арабскими, и наоборот.
1 I
5 V
10 X
50 L
100 C
500 D
1000 M
Например: 46 XLVI ; 583 DLXXXIII; 888 DCCCLXXXVIII; 1989 MCMLXXXIX
Перевод римских чисел в арабские
Доброй ночи всем. Нужны наиболее рациональные и простые в реализации идеи для решения задачи. Дан.
Перевод римских цифр в арабские
Нужно написать программу перевода римских чисел в арабские. Есть эта программа на c#, но нужна на.
Из римских чисел в арабские в файле
Здравствуйте. Дана задача — в данном тексте заменить все римские числа на арабские. Вот я и не могу.
Перевод римских чисел в десятичные
Напишите программу перевода римских чисел в десятичные. Алгоритм перевода представлен в следующей.
Перевод чисел из системы счисления по основанию 16 в 8 и наоборот из 8 в 16
написать программу которая переводит числа из системы счисления по основанию 16 в 8 и наоборот из 8.
Вы хоть сами что-то напишите, идеи свои или код
Чем вам поможет тупо скопированный чужой код
По идее нужно двигаться с конца, и сразу выводить. То есть числа переводите в массив и выводите сразу.
09.12.2011, 22:38 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
09.12.2011, 22:39 | 5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
09.12.2011, 23:43 | 6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
да. задачка оказалась интересной. внесу свои пять копеек в фонд решений. оптимизацию и запрет глобальных переменных в топку. главное работает |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
10.12.2011, 06:03 | 7 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
В строке 17 переменная i объявлена как size_t,а значит как минимум не может принимать отрицательные значения. В связи с этим в цикле (строка 24) условие i >= 0 будет всегда TRUE и от сюда следует бесконечный цикл. Добавлено через 2 минуты Перевод римских чисел в арабские. Пример автоматного распознавателяЗадачаМожно использовать вложенные операторы case. Это удобно, например, при реализацииавтоматных распознавателей, которые дают способ наглядной записи алгоритмов распознавания текстов. Представленная таблица предназначена для перевода римских чисел, составленных из цифр X, V, I. РешениеАлгоритм решения задачи:
Первый столбец (цифры от 1 до 7) – это состояния (state). Для расшифровки XIV начинаем с состояния 1. Первый символ – ‘X’, поэтому смотрим столбец ‘X’ и находим n := 10; state := 2. Итак, полагаем n равным 10 и сдвигаем стрелку на вторую строку. Теперь смотрим столбец, определяемый вторым символом, т.е. ‘I’, и находим n := n + 1; state := 6. Значение n, таким образом, становится 10 + 1 = 11. Сдвигаем стрелку к строке 6. Теперь в столбце ‘V’ находим n := n + 3; state := 7. Значение n становится равным 11 + 3 = 14. Сдвигаем стрелку на строку 7 и замечаем, что любая следующая цифра ‘X’, ‘V’ или ‘I’ будет теперь ошибкой (чисел XIVX, XIVV, XIVI не может быть). Эта таблица позволяет декодировать римскую запись чисел, содержащих любое количество цифр X (в начале) и цифры V, I, записанные по обычным правилам: Вместе с тем такое число как IIII будет воспринято как ошибочное и переменная ok примет значение false. Для работы с цифрами M, D, C и L таблицу можно расширить. Программа на языке Паскаль: Программа не выдает ошибок, но и не работает. О римских цифрахОписание записи числа римскими цифрами. Конвертер между римскими цифрами и десятичными цифрами. Римляне, как известно, использовали для записи числа латинские буквы. Считается, что римская система счисления является классическим примером непозиционной системы счисления, то есть такой системы счисления, в которой величина, которую обозначает цифра, не зависит от положения в числе. Напомним, что в римской системе счисления I обозначает 1, V обозначает 5, X — 10, L — 50, C — 100, D — 500, M — 1000. Однако на самом деле не все так просто, и она не является полностью непозиционной системой счисления, потому что в римской системе счисления есть дополнительное правило, которое влияет на величину, которую обозначает цифра, в зависимости от ее положения. Правило это запрещает употреблении одной и той же цифры более 3 раз подряд, поэтому три это III, а четыре это уже IV, и I(1), стоящая перед большей цифрой V(5), обозначает вычитание, то есть фактически равна -1. Ниже два калькулятора — для перевода числа из диапазона 1 – 3999 в римское число и наоборот. Преобразование арабских чисел в РИМСКИЕ.Иногда в таблице необходимо отобразить обычные арабские числа в римском написании. Например: когда вы провели расчеты (вычисления) арабскими числами. А отобразить их в приложении к договору или в бланке нужно в римских цифрах. Для этого можно использовать функцию «РИМСКОЕ». Функция преобразует арабские цыфры в римские в текстовом формате. Рассмотрим на примере:
Как перевести римские цифры на русские (арабские)?Многие пользователи интернета очень часто так задают вопрос, когда нужно перевести какое-то римское число в арабское. Как это правильно делать — римское в арабское? Здесь нужно знать полностью какой знак что именно означает. Если бы наяву, я бы вам подсказал, а так. просто нет римских чисел на буке, чтобы их изобразить. Как-то не очень давно я задался целью научиться преобразовывать римские числа в арабские, и это у меня получилось уже со второго раза. Поверьте, это очень даже легко. I-1, V-5, X-10, L-50 C-100, D-500, M-1000. А теперь представьте, что перед вами римское число MCMLXXXVI. Как вы думаете, что это за число? Расшифровываем. Первая М-1000, затем обращаем внимание, что следующее число состоит из нескольких знаков, как и все последующие: СМ-900, LXXX-80, VI-6. Складываем всё в кучу, получаем 1986. Нужно просто знать полную расшифровку римских чисел. I-1, II-2, III-3, IV-4, V-5, VI-6, VII-7, VIII-8, IX-9, X-10. Второй десяток прибавляем после 10-ти (Х) первый ряд. Затем начинается такая же цепочка из десятков: ХХ-20, ХХХ-30, XL-40, L-50, LX-60, LXX-70, LXXX-80, XC-90, C-100. Затем идут сотни СС-200, CCC-300, CD-400, D-500, DC-600, DCC-700, DCCC-800, CM-900, M-1000. Вот весь ряд до тысячи. С этим рядом риских чисел можно спокойно переводить даже очень большие римские числа в арабские, просто нужно быть внимательным. конвертер Римские цифры в Арабские и наоборотЯзык Java /Основы языка Java
|