Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите дописать (https://javascript.ru/forum/misc/23748-pomogite-dopisat.html)

Любознательный 04.12.2011 18:16

Помогите дописать
 
Написать программу перевода чисел от 1 до 9 в римскую систему счисления на языке
switch (num) {
case 1:
number = 'I';
break;
case 2:
number = 'II';
break;
case 3:
number = 'III';
break;
case 4:
number = 'IV';
break;
case 5:
number = 'V';
break;
case 6:
number = 'VI';
break;
case 7:
number = 'VII';
break;
case 8:
number = 'VIII';
break;
case 9:
number = 'IX';
break;
default:
number = '_'
}

Gvozd 04.12.2011 19:14

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.

Gvozd 04.12.2011 19:15

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

nerv_ 04.12.2011 19:16

Вот на VBA я писал 12/09/2011. Понимаю, что не в тему :D, но зато переводит любые (в пределах разумного) римские числа. Сейчас попробую на js перевести...
Public Function RomanToArabic2(ByVal RStr As String) As Long
Dim i%, h%, j As Byte
RStr = UCase(RStr)
For j = 1 To Len(RStr)
    i = InStr("IVXLCDM", Mid(RStr, j, 1))
    i = IIf(i, Choose(i, 1, 5, 10, 50, 100, 500, 1000), 0)
    h = IIf(h < i, i - h * 2, i): RomanToArabic2 = RomanToArabic2 + h
Next
End Function

оу... Не доглядел. Нужно наоборот) Но все равно мне интересно для изучения будет попробовать)

nerv_ 04.12.2011 21:14

Переводит римские числа в арабские. Пример взят отсюда Википедия/Римские_цифры
// Переводит римские числа в арабские
var num = prompt("Введите римское число", "ammmCMXCIX"); // default - 3999
if(num) alert(RomanToArabic(num));
			
function RomanToArabic() {
	var i, alph = { I:1, V:5, X:10, L:50, C:100, D:500, M:1000 };
	for(var h = 0, j = 0, n = 0; j < arguments[0].length; j++) {
		i = alph[arguments[0].charAt(j).toUpperCase()];
		if(i) n += h = (h < i ? i - (h << 1) : i);
	}
	return n;
}

nerv_ 07.12.2011 20:23

Потихоньку синтаксис js осваиваю. Любознательный, вроде как решил Вашу задачку ;)
// Переводит арабские числа в римские 
var num = prompt("Введите число", 19); // default - 19
if(num) alert(ArabicToRoman(num));

function ArabicToRoman() {
	var alph = [["I",1], ["IV",4], ["V",5], ["IX",9], ["X",10], ["XL",40], ["L",50], ["XC",90], ["C",100], ["CD",400], ["D",500], ["CM",900], ["M",1000]];
	for(var j = alph.length - 1, i = arguments[0], n = ""; j != -1; j--) {
		if(~~(i / alph[j][1]) > 0) { n += alph[j][0]; i -= alph[j][1]; j++; }
	}
	return n;
}

melky 07.12.2011 22:13

if(~~(i / alph[j][1]) > 0) { n += alph[j][0]; i -= alph[j][1]; j++; }

красава. на хабре говорят, что за такое нужно отрывать руки.

вы для людей код пишите? вы добровольно решаете задачу, выкладываете решение на форум.. да, для людей! так почему не следуете стилю написания?

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

а попытки ручного преобразования в байт-код оставьте для второй версии скрипта, которая называется "минифицированной" и после всех ухищрений ещё и сжата в GCC.

.. наболело. если я вас коим образом задел, прошу меня извинить.

PS если вы не знаете, что такое стильный код - то это такой код, который очень легко и приятно читать.
PSS если выложите код в двух версиях - для разработчиков (с комментариями и со всем порядочным) и для пользователей (минифицированная), то я поставлю вам плюсик, если это важно :)

trikadin 07.12.2011 22:28

melky, не злись)

У меня тоже был бзик на минимальность кода) Понял, что это фигня, когда через месяц мне было проще переписать всё, чем разбирать то, что написал.

melky 07.12.2011 22:34

Цитата:

Сообщение от trikadin (Сообщение 141291)
melky, не злись)

У меня тоже был бзик на минимальность кода) Понял, что это фигня, когда через месяц мне было проще переписать всё, чем разбирать то, что написал.

у меня тоже было. да оно у всех есть. только надо это вовремя пресекать, чтобы не было дальше разочаровния, что так делать некруто

trikadin 07.12.2011 22:39

Цитата:

Сообщение от melky
у меня тоже было. да оно у всех есть. только надо это вовремя пресекать, чтобы не было дальше разочаровния, что так делать некруто

Ну, от разочарования никуда не денешься, так или иначе. Нельзя сразу писать идеально))


Часовой пояс GMT +3, время: 17:08.