1)Напишите процедуру в программе Pascal ABC(Паскаль), которая выводит на экран в столбик все цифры переданного...

Тематика Информатика
Уровень 10 - 11 классы
Pascal ABC вывод цифр числа числа в столбик римская система счисления процедура программирование на Паскале отображение чисел
0

1)Напишите процедуру в программе Pascal ABC(Паскаль), которая выводит на экран в столбик все цифры переданного ей числа, начиная с первой. Пример: 1234 1 2 3 4

2)Напишите процедуру, которая выводит на экран запись переданного ей числа в римской системе счисления. Пример: 2013 MMXIII

avatar
задан месяц назад

2 Ответа

0

Конечно, давайте разберем оба вопроса.

1) Процедура в Pascal ABC, которая выводит на экран в столбик все цифры переданного числа

Для выполнения этой задачи, нам нужно создать процедуру, которая будет принимать число в качестве параметра, конвертировать его в строку и затем выводить каждую цифру в отдельной строке.

Вот пример кода для этой задачи:

program OutputDigitsInColumn;

procedure PrintDigitsInColumn(number: Integer);
var
  numStr: String;
  i: Integer;
begin
  numStr := IntToStr(number);  // Преобразуем число в строку
  for i := 1 to Length(numStr) do
  begin
    Writeln(numStr[i]);  // Выводим каждую цифру в отдельной строке
  end;
end;

var
  inputNumber: Integer;
begin
  Write('Введите число: ');
  Readln(inputNumber);
  PrintDigitsInColumn(inputNumber);
end.

2) Процедура, которая выводит на экран запись числа в римской системе счисления

Для выполнения этой задачи нам нужно написать процедуру, которая будет преобразовывать арабские числа в римские. Римская система счисления использует следующие символы: I (1), V (5), X (10), L (50), C (100), D (500), M (1000).

Вот пример кода для этой задачи:

program ConvertToRoman;

function IntToRoman(num: Integer): String;
const
  values: array[1.13] of Integer = (1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1);
  symbols: array[1.13] of String = ('M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I');
var
  i: Integer;
  result: String;
begin
  result := '';
  for i := 1 to 13 do
  begin
    while num >= values[i] do
    begin
      num := num - values[i];
      result := result + symbols[i];
    end;
  end;
  IntToRoman := result;
end;

procedure PrintRomanNumber(number: Integer);
begin
  Writeln(IntToRoman(number));
end;

var
  inputNumber: Integer;
begin
  Write('Введите число: ');
  Readln(inputNumber);
  PrintRomanNumber(inputNumber);
end.

Объяснение кода

1. Процедура для вывода цифр числа в столбик:

  • IntToStr(number): Преобразует число в строку.
  • Length(numStr): Возвращает длину строки.
  • Цикл for используется для перебора каждого символа строки и вывода его на экран.

2. Процедура для преобразования числа в римскую систему счисления:

  • Используются массивы values и symbols для хранения значений и соответствующих римских символов.
  • В цикле for проверяется, сколько раз текущее значение из массива values может быть вычтено из числа num, и соответствующий римский символ добавляется к результату.
  • Цикл продолжается до тех пор, пока все значения не будут обработаны.

Таким образом, обе процедуры выполняют свои задачи корректно и выводят требуемую информацию.

avatar
ответил месяц назад
0

1) Процедура в Pascal ABC для вывода цифр числа в столбик:

procedure PrintDigits(num: integer);
var digit: integer;
begin
  while num > 0 do
  begin
    digit := num mod 10;
    writeln(digit);
    num := num div 10;
  end;
end;

2) Процедура в Pascal ABC для вывода числа в римской системе счисления:

procedure RomanNumeral(num: integer);
const
  RomanChars: array[1.13] of string = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
  RomanValues: array[1.13] of integer = (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);
var
  i: integer;
begin
  i := 13;
  while num > 0 do
  begin
    if num >= RomanValues[i] then
    begin
      write(RomanChars[i]);
      num := num - RomanValues[i];
    end
    else
    begin
      i := i - 1;
    end;
  end;
end;

Пример использования:

PrintDigits(1234);
RomanNumeral(2013);

avatar
ответил месяц назад

Ваш ответ

Вопросы по теме