условия под особенности рус. языка

Corvin

Новичок
условия под особенности рус. языка

ПОдскажите, как оптимально правильно составить условия под особенности рус. языка:

1,21,... новость
2,3,4,22,23,24,... новости
5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,... новостей

надо точно знать какое из 3-ех слов подставлять к числу.
 

Corvin

Новичок
Угу.. и писать мне этот ряд до 1 000 000, чтоб уж наверняка все предусмотреть :) Так не пойдет...
 

Tn

Guest
Об остатке после деления слышал ?
Если, да. То RTFM грамматика русского языка.
 

Corvin

Новичок
угу, ставить цикл на многократное деление, пока не получишь нужного результата, а затем еще сверять остаток, не слишком ли громостко получится? Думается должен быть выход попроще.
 

Tn

Guest
Мля, какое еще много кратное деление с циклом.. substr на 2 последних цифры
 

Corvin

Новичок
хм.. стормозил :) все-таки 3 часа ночи сказываются. thanks, за вывод из ступора. Но при чем тут был все же "остаток после деления"? ;)
 

Tn

Guest
после substr:
1 - новость
2, 3, 4 - новости
0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 - новостей

Значит,
PHP:
если число XX > 19 или ХХ < 11, то:
  если XX % 10 == 1, то новость, 
  если XX % 10 > 1 && XX % 10 < 5, то новости,
  иначе: новостей
иначе: новостей
 

Popoff

popoff.donetsk.ua
PHP:
если число XX > 19 или ХХ < 11, то: 
  если XX % 10 == 1, то новость, 
  если XX % 10 > 1 && XX % 10 < 5, то новости, 
  иначе: новостей 
иначе: новостей
PHP:
если предпоследняя цифра = 1 или последнняя>4 или последняя=0 то новостей
иначе если последняя цифра = 1 то новость
иначе новости
-~{}~ 08.02.04 08:59:

это я имел в виду число, к примеру, 211 :)
 

Corvin

Новичок
Я сделал несколько по другому, по предложеному варианту Tn, мне кажется это попроще:

PHP:
$rs=substr("$mNum", -1);
if  ($rs == 1) return "НОВОСТЬ";
elseif(($rs == 2)||($rs == 3)||($rs == 4)) return "НОВОСТИ";
else  return "НОВОСТЕЙ";
 

Profic

just Profic (PHP5 BetaTeam)
угу и будет у вас
"11 новость" вместо 11 новостей
"12 новости" вместо 12 новостей
и т.д.
Прям чукчи получатся
 

Tn

Guest
Profic: в моем алгоритме не будет (ты наверно не заметил substr(XX, -2) в самом начале).
Corvin: читай сообщения Profic, его алгоритм проще
 
Сверху