
Во фрагменте текста (текстовый файл) для красоты решили записать все натуральные числа (годы,
номера королей) римскими числами. Известно, что числа там встречаются от 1 до 3100. Напишите программу, которая введет с клавиатуры имя текстового файла в кодировке UTF-8, переведет все такие числа в римскую запись (по правилам Шварцмана) и выведет текст с заменой их записи на экран. Учтите, что даты и дробные числа преобразовывать нельзя – хотя цифры там есть. Напоминаем: - Римские целые числа записываются буквами I,V,X и некоторыми другими - Числа написанные с уменьшением значения слева направо - суммируются (VI - 6), с уменьшением справа налево - вычитаются (IX - 9). - Количество символов в записи должно быть минимальным - Больше 3 одинаковых символов подряд писать нельзя. Обратите внимание: все данные для работы программы поступают из стандартного потока ввода (в Python используется функция input() ), каждый параметр - отдельной строкой. Все результаты выводятся в стандартный поток вывода ( в Python используется функция print() ). Пожалуйста учтите, что весь вывод программы будет сравниваться с ответом, не выводите лишние комментарии.

Ответы на вопрос

Ответ:
import re
def checkio(n): #перевод арабских чисел в римские
result = ''
for arabic, roman in zip((1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1),
'M CM D CD C XC L XL X IX VIII VII VI V IV III II I'.split()):
result += n // arabic * roman
n %= arabic
return result
def chisla(n): #поиск всех чисел в тексте
l = len(n)
integ = []
i = 0
while i < l:
s_int = ''
a = n[i]
while '0' <= a <= '9':
s_int += a
i += 1
if i < l:
a = n[i]
else:
break
i += 1
if s_int != '':
integ.append(int(s_int))
return integ
text = ''
fail = input()
with open(fail, 'r', encoding='utf-8') as text_file: #сохранение текста из файла в переменную text
tekst = text_file.readlines()
for stroka in tekst:
text += stroka
num = chisla(text)
for i in num: #замена всех арабских чисел на римские
rep = checkio(i)
text = text.replace(str(i), rep)
print(text)
Объяснение:
я короче хз, что сайту не нравится, но мой код работает адекватно. И не забудь создать папку с нужным тебе названием в том же самом месте, где лежит файл с кодом



Для решения этой задачи мы можем использовать язык программирования Python. Программа должна прочитать текстовый файл, заменить натуральные числа на их римскую запись и вывести измененный текст.
Вот пример программы на Python:
```python def arabic_to_roman(number): # Функция для перевода арабского числа в римское val = [ 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 ] syb = [ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" ] roman_num = '' i = 0 while number > 0: for _ in range(number // val[i]): roman_num += syb[i] number -= val[i] i += 1 return roman_num
def process_text(file_name): try: with open(file_name, 'r', encoding='utf-8') as file: text = file.read() words = text.split() for i in range(len(words)): try: # Пробуем преобразовать слово в число num = int(words[i]) if 1 <= num <= 3100: # Заменяем число на римскую запись roman_num = arabic_to_roman(num) words[i] = roman_num except ValueError: # Если не удалось преобразовать в число, пропускаем pass result_text = ' '.join(words) print(result_text) except FileNotFoundError: print("Файл не найден")
if __name__ == "__main__": file_name = input("Введите имя текстового файла: ") process_text(file_name) ```
Как работает программа: 1. Сначала она открывает файл и читает его содержимое. 2. Затем текст разбивается на слова, и каждое слово проверяется на то, является ли оно числом. 3. Если слово - число в диапазоне от 1 до 3100, то оно заменяется на его римскую запись. 4. Результат выводится на экран.
Примечание: Для удобства я добавил обработку исключений (например, FileNotFoundError), чтобы программа была более устойчивой к возможным ошибкам.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili