кроссворды, задачки, головоломки

Сборник задач разного уровня сложности по математике, информатике, физике, химии, программированию, экономике etc. Логические задачи, SQL задачи, решение задач. Задачи с ответами, а также нерешённые задачи.

Petruchek.Info

Римская система счисления

Добавлено: 04.02.09 в 12:30
Метки: задачи на строки системы счисления

По введеному числовому значению N (0 < N < 4000) вывести его запись в римской системе счисления.

Римская система счисления использует 7 цифр:

I=1   V=5   X=10   L=50   C=100   D=500   M=1000

Использовать более 3 одинаковых цифр подряд не разрешается.

У этой задачи пока что нет ответа/решения. Вы можете прислать свой вариант в комментарии.


Комментарии
Google says:
G_Ri_F (07.03.09):
Предлгаю свой вариант. Писался на C#
private string convert(int num) {
string romanNumber = "";
int[] tmp = new []{
num /1000,
(num / 100) % 10 - 5 > 0? 1:0, ((num / 100) % 10) % 5,
(num / 10) % 10 - 5 > 0? 1:0, ((num / 10) % 10) % 5,
(num / 1) % 10 - 5 > 0? 1:0, ((num / 1) % 10) % 5};
string[] roman = new [] {
"M", "D", "C", "L", "X", "V", "I"};
for (int i = 0; i < tmp.Length; i++) {
if (tmp[i] > 3) {
romanNumber += roman[i] + roman[i - 1];
} else {
for (int j = 0; j < tmp[i]; j++) {
romanNumber += roman[i];
}
}
//Добавление пробела между рзрядами
romanNumber += i % 2 == 0 ?" ":"";
}
return romanNumber;
}
G_Ri_F (08.03.09):
Снимается не работает на цифрах 9
Аноним (01.06.10):
На Паскале
{I=1 V=5 X=10 L=50 C=100 D=500 M=1000}
const razr: array[0..6] of char = (&#39;I&#39;,&#39;V&#39;,&#39;X&#39;,&#39;L&#39;,&#39;C&#39;,&#39;D&#39;,&#39;M&#39;);

var s: string;
c,d,i,j: integer;
numeric: array[0..3] of byte;

begin
writeln(&#39;Введите число, меньшее 4000&#39;);
readln(c); //число
d:=c; //вспомогательная переменная
s:=&#39;&#39;; //результирующая строка
for i:=0 to 3 do begin //записываем цифры числа в массив numeric
numeric[i]:=d mod 10;
d:=d div 10;
end;
//просматриваем массив цифр и формируем строку согласно правилам перевода
for i:=3 downto 0 do
If (numeric[i]<>0) then
If (numeric[i]<4) then
for j:=1 to numeric[i] do s:=s+razr[i*2]
Else If (numeric[i]=4) then
begin
For j:=1 to abs(numeric[i]-5) do s:=s+razr[i*2];
s:=s+razr[i*2+1];
end
Else If (numeric[i]<9) then
begin
s:=s+razr[i*2+1];
For j:=1 to (numeric[i]-5) do s:=s+razr[i*2];
end
Else If (numeric[i]=9) then
begin
For j:=1 to abs(numeric[i]-10) do s:=s+razr[i*2];
s:=s+razr[i*2+2];
end;
writeln(s);
end.
UFHSLDG (22.09.11):
MICCCXXXVIII=?
   Ответ редакции
Вроде 1337
UFHSLDG (22.09.11):
ответ напишите пожалуйста
MICCCXXXVIIIx
UFHSLDG (22.09.11):
1337 году построили здания обсерваторию КГУ ???
UFHSLDG (22.09.11):
Спасибо!!!!!
Пётр (23.03.14):
MICCCXXXVIII - в этом числе ошибка. I не может стоять перед C. По крайней мере, это не по принятым правилам написания римских чисел.
Если I перед C написано ошибочно (опечатка UFHSLDG), то ответ редакции неверен - правильное число 1338.
Комментарий от новенького:
Новенький является
Новенький не робот
Знаки на картинке: латинские буквы, арабские цифры


Есть на сайте: Онлайн кроссворды Задачи Онлайн игры Блог
Все работы, опубликованные на сайте — авторские, если не указано иное. Перепечатка возможна только с письменного разрешения владельцев ресурса, с обязательной ссылкой на сайт petruchek.info. Пишите нам: . Сайт должен работать в IE, FF, Opera, Safari.

Реклама:

Разработано в студии "Webous"о проектесайта карта

Реклама: