Считать, преобразовать цифры файла в римские и записать в другой файл - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

В файле находятся цифры, записанные через пробел. Нужно их считать, преобразовать в римские и записать в другой файл. Помогите, пожалуйста, переделать код. Код, который работает с одной цифрой:
Листинг программы
  1. Uses crt;
  2. const
  3. {римские цифры}
  4. RomeDigits: array [1..13] of string[2] =
  5. ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
  6. {соответствующие римским цифрам}
  7. ArabicNumbers: array [1..13] of integer =
  8. (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);
  9. {Функция перевода арабского числа в римское}
  10. function ArabicToRome (n: integer): string;
  11. var
  12. i: integer;
  13. res: string;
  14. begin
  15. res:='';
  16. i:=13;
  17. while n>0 do begin
  18. while ArabicNumbers[i]>n do
  19. i:=i-1;
  20. res:=res+RomeDigits[i];
  21. n:=n-ArabicNumbers[i];
  22. end;
  23. ArabicToRome := res;
  24. end;
  25. procedure ReadFile (var arabic:integer);
  26. var
  27. f:text;
  28. begin
  29. assign(f,'arabicnumber.txt');
  30. reset(f);
  31. while not (eof(f)) do
  32. begin
  33. readln(f,arabic);
  34. end;
  35. close(f);
  36. end;
  37. procedure WriteFile(arabic:integer);
  38. var
  39. fr:text;
  40. begin
  41. assign(fr,'romenumber.txt');
  42. rewrite(fr,'romenumber.txt');
  43. write(fr,ArabicToRome(arabic));
  44. close(fr);
  45. end;
  46. {основная программа}
  47. var
  48. arabic: integer; {арабское число}
  49. begin
  50. readfile(arabic);
  51. writeln('Считанное арабское число: ',arabic);
  52. writefile(arabic);
  53. writeln('Римская запись: ',ArabicToRome(arabic));
  54. readln;
  55. end.

Решение задачи: «Считать, преобразовать цифры файла в римские и записать в другой файл»

textual
Листинг программы
  1. const
  2.   {римские цифры}
  3.   RomeDigits: array [1..13] of string[2] =
  4.   ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
  5.  
  6.   {соответствующие римским цифрам}
  7.   ArabicNumbers: array [1..13] of integer =
  8.   (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);
  9.  
  10. {Функция перевода арабского числа в римское}
  11. function ArabicToRome(n: integer): string;
  12. var
  13.   i: integer;
  14.   res: string;
  15. begin
  16.   res := '';
  17.   i := 13;
  18.   while n > 0 do
  19.   begin
  20.     while ArabicNumbers[i] > n do
  21.       i := i - 1;
  22.     res := res + RomeDigits[i];
  23.     n := n - ArabicNumbers[i];
  24.   end;
  25.   ArabicToRome := res;
  26. end;
  27.  
  28. procedure ReadWriteFile;
  29. var
  30.   fr, f: text;
  31.   arabic: integer;
  32. begin
  33.   assign(f, 'arabicnumber.txt');
  34.   assign(fr, 'romenumber.txt');  
  35.   reset(f);
  36.   rewrite(fr);
  37.   while not seekeof(f) do
  38.   begin
  39.     read(f, arabic);
  40.     write(fr, ArabicToRome(arabic), ' ');    
  41.   end;
  42.   close(f);
  43.   close(fr);  
  44. end;
  45.  
  46. {основная программа}
  47. var
  48.   arabic: integer;{арабское число}
  49.  
  50. begin
  51.   ReadWriteFile;
  52.   readln;
  53. end.

Объяснение кода листинга программы

  1. В строке с объявлением переменных const определяются два массива символов RomeDigits и ArabicNumbers, которые представляют римские и арабские цифры соответственно.
  2. Функция ArabicToRome принимает целое число и возвращает строку, представляющую это число в римской системе. Она использует цикл while, чтобы последовательно преобразовывать цифры от наибольшей к наименьшей, добавляя их к результирующей строке res.
  3. В процедуре ReadWriteFile открываются два файла: f для чтения из файла arabicnumber.txt и fr для записи в файл romenumber.txt. Затем происходит чтение числа из файла arabicnumber.txt, его преобразование в римскую систему с помощью функции ArabicToRome и запись результата в файл romenumber.txt.
  4. Основная программа включает вызов процедуры ReadWriteFile и затем ожидает ввода с помощью readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы