Написать программу в паскале - вводится латинское число (любое) выдать его в текстовой форме, например вводится( mdclx\/i ), вадать (тысяча шестьсот шесдисят шесть).
Ответы на вопрос:
не стал писать проверку на правильность введения римского числа. так что вводить нужно аккуратно, без ошибок, в верхнем регистре.
var a, stroka: string;
i,n,t,s,d,e,x : integer;
b: array[1..20] of integer;
type slova = array[0..9] of string[15];
const
edinit : slova = ('',' один',' два',' три',' четыре',' пять',' шесть',' семь', ' восемь',' девять');
desyat : slova = ('',' десять',' двадцать',' тридцать',' сорок',' пятьдесят', ' шестьдесят',' семьдесят',' восемьдесят ',' девяносто');
sotnya : slova = ('',' сто',' двести',' триста',' четыреста',' пятьсот',' шестьсот',' семьсот',' восемьсот',' девятьсот');
teeeen : slova = ('',' одинадцать',' двенадцать',' тринадцать',' четырнадцать', ' пятнадцать',' шестнадцать',' семнадцать',' восемьнадцать', ' девятнадцать');
tyscha : slova = ('','одна тысяча','две тысячи','три тысячи','четыре тысячи','пять тысяч','шесть тысяч','семь тысяч', 'восемь тысяч','девять тысяч');
begin
writeln('введите римское число: ');
readln(a);
{записываем число как сумму арабских эквивалентов в массив}
for i: =1 to length(a) do
case a[i] of
'i': b[i]: =1;
'v': b[i]: =5;
'x': b[i]: =10;
'l': b[i]: =50;
'c': b[i]: =100;
'd': b[i]: =500;
'm': b[i]: =1000;
end;
{суммируя элементы массива, находим число в 10-м виде}
n: =0;
for i: =1 to length(a) do
begin
n: =n+b[i];
if(i> 1)and( b[i-1]< b[i]) then n: =n-2*b[i-1]; //если меньшая римская цифра идёт перед большей, то она вычитается
end;
{преобразовываем число в текст}
stroka: ='';
t: =n div 1000;
if t> 0 then stroka: =stroka+tyscha[t];
s: =n div 100 mod 10;
stroka: =stroka+sotnya[s];
x: =n mod 100;
d: =x div 10;
e: =x mod 10;
if (d=1) and (e< > 0) then stroka: =stroka+teeeen[e]
else stroka: =stroka+desyat[d]+edinit[e];
writeln(stroka);
end.
Популярно: Информатика
-
Fox0081104.02.2020 17:37
-
артур63127.11.2020 05:40
-
nikzakora04.01.2023 23:15
-
alextrasted07.05.2023 03:29
-
мама103329.12.2022 04:39
-
karinka10115.01.2022 12:20
-
RitaMur16.03.2022 11:48
-
Recor2308.09.2022 16:18
-
GoldenRose9929.04.2020 19:02
-
hamkarmik22504.02.2021 07:36