Не запускается программа по переводу арабских чисел в римские - PascalABC.NET

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

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

Писала программу по учебнику, для перевода арабских чисел в римские, и похоже что то упустила. Вот код:
Листинг программы
  1. const
  2. ROME: array[1..13] of string = ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I');
  3. ARABIC: array[1..13] of integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);
  4. var
  5. number: integer:=0;
  6. sNumber: string:='';
  7. n: integer:=0;
  8. begin
  9. while (true) do
  10. begin
  11. repeat
  12. writeln('Введите арабское число 1..3999');
  13. number := ReadInteger();
  14. if (number = 0) then exit;
  15. until ((number >= 1) and (number <=3999));
  16. n := 0;
  17. sNumber :='';
  18. while (number > 0) do
  19. begin
  20. Inc(n);
  21. while (ARABIC[n] <= number) do
  22. begin
  23. sNumber := sNumber + ROME[n];
  24. number := number - ARABIC[n];
  25. wriln(sNumber);
  26. writeln()
  27. end;
  28. end.
Выдаёт ошибку " Встречено '.', а ожидалось ';'" если изменить на ';' то " Встречен конец файла, а ожидался оператор". Я нашла тему на форуме где модератор писал такую программу, но его код отличается от того что в учебнике, а я понять хочу что здесь не так! P.S. Простите если отредактировала код неправильно, я так и не смогла понять как это делается правильно...

Решение задачи: «Не запускается программа по переводу арабских чисел в римские»

textual
Листинг программы
  1. const
  2.   ROME: array[1..13] of string = ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I');
  3.   ARABIC: array[1..13] of integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);
  4. var
  5.   number: integer:=0;
  6.   sNumber: string:='';
  7.   n: integer:=0;
  8. begin
  9. repeat
  10. writeln('Введите арабское число 1..3999');
  11. number := ReadInteger();
  12. until (number >= 1) and (number <=3999);
  13. n := 0;
  14. sNumber :='';
  15. while (number > 0) do
  16.  begin
  17.   Inc(n);
  18.   while ARABIC[n] <= number do
  19.    begin
  20.     sNumber := sNumber + ROME[n];
  21.     number := number - ARABIC[n];
  22.    end;
  23.  end;  
  24. writeln(sNumber)
  25. end.

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

  1. Объявлены два массива: ROME и ARABIC, каждый из которых содержит 13 элементов. ROME содержит римские цифры, а ARABIC - арабские числа, соответствующие римским цифрам.
  2. Инициализированы две переменные: number и sNumber. Number используется для хранения введенного числа, а sNumber - для хранения строкового представления числа в римской системе счисления.
  3. Задается начальное значение переменной n равное 0.
  4. Цикл while с условием (number > 0) выполняется до тех пор, пока number больше нуля.
  5. Внутри цикла while выполняется еще один цикл while, который ищет наименьшее арабское число в массиве ARABIC, которое больше или равно числу number.
  6. Внутри внутреннего цикла while к строке sNumber добавляется соответствующая римская цифра из массива ROME.
  7. Затем значение number уменьшается на значение соответствующего арабского числа из массива ARABIC.
  8. После завершения внутреннего цикла while, значение переменной n увеличивается на единицу.
  9. После завершения внешнего цикла while, выводится значение переменной sNumber.

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


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

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

9   голосов , оценка 4.111 из 5

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

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

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