Перейти к публикации

Модификация нумерации навигации


Рекомендованные сообщения

Прошёлся по поиску, многое нашёл но не это.

Мне нужно изменить арабские (1,2,3,4..) цифры номеров страниц на римские (I,II,III,IV...). Может кто знает как?

Заранее спасибо.

Ссылка на сообщение
Поделиться на других сайтах

Ну а если у вас будет страница 105, как она римскими будет написана?

Изменено пользователем flo.mAster
Ссылка на сообщение
Поделиться на других сайтах

Ну а если у вас будет страница 105, как она римскими будет написана?

Римские цифры обозначаются по первым буквам слов (как и у славянских цифр). Cent (100) 105=CV.

Ведь в языке програмирования html при сортировке можно указать вывод римскими цифрами.

Изменено пользователем МВИА
Ссылка на сообщение
Поделиться на других сайтах

просто берешь один из алгоритмов преобразования арабских в римские и используешь его при выводи нафигатора. все просто. алгоритм найти - в гугль.

если хочется реальной помощи - смотри мой профиль, обращайся -покумекаем.

Ссылка на сообщение
Поделиться на других сайтах

Система римских цифр основана на обозначении особыми знаками десятичных разрядов и их половин: I(1), Х(10), C(100), M(1000), V(5), L(50), D(500).

При обозначении чисел этими цифрами место последних не имеет того значения, что в системе арабских цифр. Значения стоящих рядом цифр складываются, напр. II означает 1+1, т.е. 2, СС означает 100 + 100, т.e. 200, CXII означает 100+10+1+1, т.е. 112. Однако если цифра меньшего значения стоит левее цифры большего значения, то меньшая цифра вычитается из большей, например IV означает 5—1. Таким образом оказывается возможным различное обозначение одного и того же числа. Например, число 80 можно обозначить как LXXX (50+10+10+10) и как ХХС (100 - 20). Число 9, которое по принципу сложения должно писаться VIIII, по принципу вычитания, позволяющему избежать четырехкратного повторения одной и той же цифры, будет писаться IX. По этому же принципу в настоящее время пишутся все ближайшие к десяткам и их половинам числа — 4, 14, 19 и т. д.

Знаки L, С и М восходят к буквам послужившего основой для латинского алфавита западногреческого алфавита. Эти буквы, обозначавшие в западногреческом алфавите придыхательные звуки (kh, th, ph), отсутствовавшие в латинском языке, стали в нем употребляться для обозначения чисел и впоследствии их написание было приспособлено к написанию латинских букв. С (100) стало отождествляться с первой буквой латинского слова centum (сто), М (1000), являющееся видоизмененной формой греческого Ф,— с первой буквой латинского слова mille (тысяча).

Знак D (500), отождествленный с латинской буквой, представляет собой половину знака Ф (1000), так же, как V (5) является верхней половиной знака Х (10).

Год — 1999 — римскими цифрами следует писать: MCMXCIX.

Нашёл такой код (_http://www.codingclub.net/forum/index.php?showtopic=485), но как его вставить и модифицировать под поставленную задачу не знаю. Помогите знающие люди:

void __fastcall TForm1::Button1Click(TObject *Sender)

{

AnsiString rim = ""; // сюда мы позже занесём приславутое число

if(Edit1->Text == "") // проверка чтобы было число

{

	Edit2->Text = "No number :( try agane";

		return;

}


AnsiString chisla[2];  // Массив. Добавишь сюда другие обозначения

chisla[0] =  "";

chisla[1] = "V";

chisla[2] = "X";


try // разберёшься зачем это тут :) ?

{

int chis = atoi(Edit1->Text.c_str()); // это число добываем

}

catch(...)

{

  Edit2->Text = "It must to be any number!";

  return;

}

int pyat = chis / 5;  

int ostp = chis % 5;


if(pyat > 2)

{

	Edit2->Text = "error";

		return;

}


switch(ostp)

{

		case 0: rim = chisla[pyat]; break;

	case 1: rim = chisla[pyat] + "I"; break;

		case 2: rim = chisla[pyat] + "II"; break;

		case 3: rim = chisla[pyat] + "III"; break;

		case 4: rim = "I" + chisla[pyat+1]; break;

}



Edit2->Text = rim;

}

Ссылка на сообщение
Поделиться на других сайтах

Вот:

function IntToRoman($num)

{

  $vals= array(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000);

  $roms= array('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M');


  $result = '';

  $b = 12;

  while ($num > 0)

  {

	while ($vals[$b] > $num)

	  $b--;


	$num = $num-$vals[$b];

	$result .=  $roms[$b];

  }

  return $result;

}

echo IntToRoman(1999);

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...