Добрый день, коллеги! Мы рады вас приветствовать в нашем peer to peer канале Peer Education!
Сегодня мы начинаем погружение в мир интересных задач по программированию. Напомню основные правила: задачи должны быть решены на языке программирования . Необходимо соблюдать принципы структурного программирования, а также форматировать код с помощью clang-format. Файл конфигурации вы найдете в папке clang.
Римские цифры — цифры, использовавшиеся древними римлянами в их непозиционной системе счисления.
Натуральные числа записываются при помощи повторения этих цифр. При этом, если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая стоит перед большей, то меньшая вычитается из большей (принцип вычитания). Последнее правило применяется только во избежание четырёхкратного повторения одной и той же цифры.
Римские цифры появились за 500 лет до нашей эры у этрусков, которые могли заимствовать часть цифр у протокельтов.
Римские обозначения чисел известны ныне лучше, чем любая другая древняя система счисления. Объясняется это не столько какими-то особыми достоинствами римской системы, сколько тем огромным влиянием, которым пользовалась Римская империя в своё время. Этруски, завоевавшие Рим в VII веке до н. э., испытали на себе влияние восточно-средиземноморских культур. Этим отчасти объясняется сходство основных принципов римской и аттической систем счисления. Обе системы были десятичными, хотя в обеих системах счисления особую роль играло число пять. Обе системы использовали при записи чисел повторяющиеся символы.
Задача 1. Необходимо реализовать программу в файле src/roman_to_arabic.c для перевода из римской записи в арабскую. Программа должна принимать на ввод строку, обрабатывать ее и выводить на экран число. Проверить корректность введенных данных. Обратите внимание на подсказку снизу. В случае любой ошибки выводить на экран "Puck you, Verter!". Тест кейсы вы найдете в папке src.
Внимание: гарантировано что строка на вводе не будет длиннее 15 символов.
Отлично вы справились с поставленной задачей и теперь мы можем обрабатывать римские расчеты намного быстрее. Возможно это поможет нам победить Вертера.
Бонус. Задача 2. Реализовать программу src/universal_convert.c для перевода из римской записи в арабскую и наоборот. На ввод программа должна принимать число 1 - для перевода из римской записи в арабскую, 2 - для перевода из арабской в римскую. Далее на вход подается строка либо число, в зависимости от выбранного пункта. В качестве ответа вывести на экран результат конвертации. В случае любой ошибки выводить на экран "Puck you, Verter!". Тест кейсы вы найдете в папке src.
Внимание: гарантировано что число на вводе будет не больше 3999.
Если вы решили вторую часть этого дня - вы большой молодец, т.к. это задание обладает сложностью Medium и может использоваться на алгоритмических собеседованиях в крупных компаниях.
Дедлайн на эти задания 23:59 28.02.2024.
Увидимся в среду.