Написать программу в паскале - вводится латинское число (любое) выдать его в текстовой форме, например вводится( MDCLX\/I ), вадать (тысяча шестьсот шесдисят шесть).
program RomanToText; uses SysUtils; procedure RomanToNumber(roman: string; var result: Integer); var i: Integer; begin result := 0; for i := Length(roman) downto 1 do begin case roman[i] of 'I': result := result + 1; 'V': result := result + 5; 'X': result := result + 10; 'L': result := result + 50; 'C': result := result + 100; 'D': result := result + 500; 'M': result := result + 1000; end; if i > 1 then begin if (roman[i] = 'V') or (roman[i] = 'X') then begin if roman[i - 1] = 'I' then begin result := result - 1; i := i - 1; end; end else if (roman[i] = 'L') or (roman[i] = 'C') then begin if roman[i - 1] = 'X' then begin result := result - 10; i := i - 1; end; end else if (roman[i] = 'D') or (roman[i] = 'M') then begin if roman[i - 1] = 'C' then begin result := result - 100; i := i - 1; end; end; end; end; end; function NumberToText(number: Integer): string; const digits: array[1..13] of string = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M'); values: 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 number > 0 do begin if number >= values[i] then begin Result := Result + digits[i]; number := number - values[i]; end else i := i - 1; end; end; var romanNumber: string; arabicNumber: Integer; begin Write('Введите число в римской записи (например, MDCLXVI): '); Readln(romanNumber); RomanToNumber(romanNumber, arabicNumber); writeln('Число в арабской записи: ', arabicNumber); writeln('Число в текстовой записи: ', NumberToText(arabicNumber)); end.
Эта программа преобразует введенное римское число в арабское число и затем выводит его в текстовой форме.
Программа на Паскале:
program RomanToText;uses
SysUtils;
procedure RomanToNumber(roman: string; var result: Integer);
var
i: Integer;
begin
result := 0;
for i := Length(roman) downto 1 do
begin
case roman[i] of
'I': result := result + 1;
'V': result := result + 5;
'X': result := result + 10;
'L': result := result + 50;
'C': result := result + 100;
'D': result := result + 500;
'M': result := result + 1000;
end;
if i > 1 then
begin
if (roman[i] = 'V') or (roman[i] = 'X') then
begin
if roman[i - 1] = 'I' then
begin
result := result - 1;
i := i - 1;
end;
end
else if (roman[i] = 'L') or (roman[i] = 'C') then
begin
if roman[i - 1] = 'X' then
begin
result := result - 10;
i := i - 1;
end;
end
else if (roman[i] = 'D') or (roman[i] = 'M') then
begin
if roman[i - 1] = 'C' then
begin
result := result - 100;
i := i - 1;
end;
end;
end;
end;
end;
function NumberToText(number: Integer): string;
const
digits: array[1..13] of string = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');
values: 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 number > 0 do
begin
if number >= values[i] then
begin
Result := Result + digits[i];
number := number - values[i];
end
else
i := i - 1;
end;
end;
var
romanNumber: string;
arabicNumber: Integer;
begin
Write('Введите число в римской записи (например, MDCLXVI): ');
Readln(romanNumber);
RomanToNumber(romanNumber, arabicNumber);
writeln('Число в арабской записи: ', arabicNumber);
writeln('Число в текстовой записи: ', NumberToText(arabicNumber));
end.
Эта программа преобразует введенное римское число в арабское число и затем выводит его в текстовой форме.