Примером непозиционной системы, которая сохранилась
до наших дней, может служить система счисления,
которая применялась более двух с половиной тысяч лет назад в Древнем Риме. В
основе римской системы счисления лежали знаки I (один палец) для числа 1, V (раскрытая
ладонь) для числа 5, X (две сложенные ладони) для 10, а
для обозначения чисел 100, 500 и 1000 стали применять первые буквы
соответствующих латинских слов (Сentum — сто, Demimille — половина тысячи, Мille — тысяча).
Чтобы записать число, римляне разлагали его на сумму
тысяч, полутысяч, сотен, полусотен, десятков, пятков, единиц. Например,
десятичное число 28 представляется следующим образом:
XXVIII=10+10+5+1+1+1
(три десятка, пяток, три единицы).
Для записи промежуточных чисел римляне использовали не только сложение, но и
вычитание. При этом применялось следующее правило:
каждый меньший знак, поставленный справа от большего, прибавляется к его
значению, а каждый меньший знак, поставленный слева от большего, вычитается из
него.
Например, IX — обозначает 9, XI — обозначает 11.
Десятичное число 28 представляется следующим образом:
XXVIII=10+10+5+1+1+1,
а десятичное
число 99 имеет вот такое представление:
XCIХ=-10+100-1+10.
Римскими цифрами пользовались
очень долго. Еще 200 лет назад в
деловых бумагах числа должны были обозначаться римскими цифрами (считалось, что обычные арабские цифры легко
подделать). Римская система счисления
сегодня используется, в основном, для наименования знаменательных дат, томов,
разделов и глав в книгах.
Алфавит
I V X L C D M
1 5 10 50 100 500
1000
Римские числа пишутся в порядке убывания значащих цифр слева направо. При переводе римских цифр, их числовые
значения складываются.
Если перед цифрой
стоит цифра с меньшим числовым значением, то производится вычитание меньшего из
большего.
Далее полученная разность складывается с последующими
цифрами обычным порядком.
Известный ряд римских цифр:
I=1, V=5, X=10, L=50, C=100, D=500, M=1000.
Менее известны знаки для больших римских цифр, то есть для чисел 5000, 10000,
50000 и 100000. Скачайте переводчик
«ТИТЛО»
Программа перевода чисел из римского в арабское на С++
#include
<stdio.h>
#include <conio.h>
#include <string.h>
char *a2roman (int value, char *c1, char *c2, char *c3);
int main (void)
{
int arabicalNumeral = 1;
int result;
char roman[15] = "";
do
{
clrscr();
textcolor(GREEN);
cprintf("..::Programma dlya preobrazovaniyz arabskih
chisel v rimskie::..");
cprintf("\n\r================================================================");
textcolor(RED);
cprintf("\n\n\rVvedite chislo ot 1 do 3000:
");
scanf ("%d", &arabicalNumeral);
}
while ((arabicalNumeral < 1) || (arabicalNumeral > 3000));
if ((arabicalNumeral <= 3000) && (arabicalNumeral >=
1000))
{
result = arabicalNumeral / 1000;
strcat (roman, a2roman(result, "M", "
", " "));
arabicalNumeral -= (result * 1000);
}
if ((arabicalNumeral < 1000) && (arabicalNumeral >=
100))
{
result = arabicalNumeral / 100;
strcat (roman, a2roman(result, "C",
"D", "M"));
arabicalNumeral -= (result * 100);
}
if ((arabicalNumeral < 100) && (arabicalNumeral >=
10))
{
result = arabicalNumeral / 10;
strcat (roman, a2roman(result, "X",
"L", "C"));
arabicalNumeral -= (result * 10);
}
if ((arabicalNumeral < 10) && (arabicalNumeral >=
1))
{
strcat (roman, a2roman(arabicalNumeral, "I",
"V", "X"));
}
textcolor(LIGHTBLUE);
cprintf("Eto chiclo v rimskom napisanii:
%s\n\n", roman);
textcolor(YELLOW);
cprintf("\n\r
...Press any key to exit... ");
getch();
return 0;
}
|