Показать сообщение отдельно
  #8 (permalink)  
Старый 25.08.2011, 17:07
Аватар для kukuyok
Интересующийся
Отправить личное сообщение для kukuyok Посмотреть профиль Найти все сообщения от kukuyok
 
Регистрация: 11.09.2010
Сообщений: 23

Насколько применимо вообще - не знаю, но задачу, под которую писал, функция решила:
function sklon(num, basic, ed, do4, posle5)
// (число, основа, окончание для ед.ч., для NNN2...NNN4, NNN5...NNN0)
{
	var slovco = basic;
	if(num-Math.floor(num) != 0) slovco += do4;
	else
	{
		//не знаю лучшего способа для обрезания :)
		var sht;
		if(num>=100)
		{
			sht = num*0.01;
			sht = Math.round(sht);
			sht = num - sht*100;
		}
		else	sht = num;	
		
		if(sht>=5 && sht<=20) slovco+=posle5;
		else
		{
			if(sht%10 == 1) slovco+=ed;
			else
			{
				if(sht%10 > 4) slovco+=posle5;			
				else
				{
					if(sht%10 == 0) slovco+=posle5;
					else
					{
						slovco+=do4;
					}
				}
			}
		}
	}
	return slovco;
}

for(var i=0; i<=1001; i++)
{
	var word = sklon(i, 'пользовател', 'ь', 'я', 'ей');
	alert(i+' '+word);
}
Ответить с цитированием