Считать, преобразовать цифры файла в римские и записать в другой файл - Turbo Pascal
Формулировка задачи:
В файле находятся цифры, записанные через пробел. Нужно их считать, преобразовать в римские и записать в другой файл. Помогите, пожалуйста, переделать код.
Код, который работает с одной цифрой:
Решение задачи: «Считать, преобразовать цифры файла в римские и записать в другой файл»
textual
Листинг программы
const
{римские цифры}
RomeDigits: array [1..13] of string[2] =
('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
{соответствующие римским цифрам}
ArabicNumbers: array [1..13] of integer =
(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);
{Функция перевода арабского числа в римское}
function ArabicToRome(n: integer): string;
var
i: integer;
res: string;
begin
res := '';
i := 13;
while n > 0 do
begin
while ArabicNumbers[i] > n do
i := i - 1;
res := res + RomeDigits[i];
n := n - ArabicNumbers[i];
end;
ArabicToRome := res;
end;
procedure ReadWriteFile;
var
fr, f: text;
arabic: integer;
begin
assign(f, 'arabicnumber.txt');
assign(fr, 'romenumber.txt');
reset(f);
rewrite(fr);
while not seekeof(f) do
begin
read(f, arabic);
write(fr, ArabicToRome(arabic), ' ');
end;
close(f);
close(fr);
end;
{основная программа}
var
arabic: integer;{арабское число}
begin
ReadWriteFile;
readln;
end.
Объяснение кода листинга программы
- В строке с объявлением переменных
constопределяются два массива символовRomeDigitsиArabicNumbers, которые представляют римские и арабские цифры соответственно. - Функция
ArabicToRomeпринимает целое число и возвращает строку, представляющую это число в римской системе. Она использует циклwhile, чтобы последовательно преобразовывать цифры от наибольшей к наименьшей, добавляя их к результирующей строкеres. - В процедуре
ReadWriteFileоткрываются два файла:fдля чтения из файлаarabicnumber.txtиfrдля записи в файлromenumber.txt. Затем происходит чтение числа из файлаarabicnumber.txt, его преобразование в римскую систему с помощью функцииArabicToRomeи запись результата в файлromenumber.txt. - Основная программа включает вызов процедуры
ReadWriteFileи затем ожидает ввода с помощьюreadln.