Правильные окончания слов

Уроки по PHP, Javascript и т.п.

Re: Правильные окончания слов

Сообщение Skaler » 15 янв 2011, 22:13

Я такое решение придумал, пусть может не самое лучшее, но работает безотказно:
  1.  
  2. switch ( (ns.value.toString()).charAt( (ns.value.toString()).length - 1) )
  3.     {
  4.         case "1" : tf.text = " " + ns.value.toString() + " значок"; break;
  5.         case "2" : case "3" : case "4" : mc_store.tf_exchange.text = " " + ns.value.toString() + " значка"; break;
  6.         case "5" : case "6" : case "7" : case "8" : case "9" : case "0" : tf.text = " " + ns.value.toString() + " значков"; break;
  7.     }
  8. switch ( (ns.value.toString()).charAt( (ns.value.toString()).length - 2) ) + (ns.value.toString()).charAt( (ns.value.toString()).length - 1) )
  9.     {
  10.         case "11" : case "12" : case "13" : case "14" : tf.text = " " + ns.value.toString() + " значков"; break;
  11.     }
  12.  

ns - NumericStepper
tf - TextField
Аватара пользователя
Skaler

 
Сообщения: 38
Зарегистрирован: 22 мар 2010, 23:29
Откуда: Великий Новгород
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Правильные окончания слов

Сообщение xShinigami » 23 фев 2011, 08:57

  1.  
  2. function takesklon($n, $form = array()) {
  3.         $takesklon = ($n % 10 == 1 && $n % 100 != 11 ? 0 : ($n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 or $n % 100 >= 20) ? 1 : 2));
  4.         switch($takesklon) {
  5.             case 0:
  6.             default:
  7.                 return $form[0];
  8.             case 1:
  9.                 return $form[1];
  10.             case 2:
  11.                 return $form[2];
  12.         }
  13.     }
  14.  

так лучше имхо)
xShinigami

 
Сообщения: 7
Зарегистрирован: 22 окт 2010, 10:40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Правильные окончания слов

Сообщение bodnar » 25 фев 2011, 09:24

xShinigami писал(а):
  1. switch($takesklon) {
  2.             case 0:
  3.             default:
  4.                 return $form[0];
  5.             case 1:
  6.                 return $form[1];
  7.             case 2:
  8.                 return $form[2];
  9.         }

ох, а лучше ли заменить на
Обязательно к прочтению: ActionScript 3.0 Ошибки среды выполнения
Аватара пользователя
bodnar
Модератор
Модератор
 
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41
Благодарил (а): 16 раз.
Поблагодарили: 185 раз.

Re: Правильные окончания слов

Сообщение turikhay » 16 мар 2011, 18:30

я тут набросал код для статистики посещений на php. может, кому пригодиться :D
  1. $count = $counters->by_id($id); // Считаем, сколько раз посетили страницу с идом $id
  2. $subtr = substr($count,-1); // Вырезаем последнюю цифру из счетчика
  3. if ($count > 20)
  4. {
  5.     if ($substr == 2 or $substr == 3 or $substr == 4)
  6.     {
  7.         echo "раза";
  8.     }
  9.     else
  10.     {
  11.         echo "раз";
  12.     }
  13. }
  14. else
  15. {
  16.     if ($count > 4 or $count == 1 and $count < 22)
  17.     {
  18.         echo "раз";
  19.     }
  20.     elseif ($count !== 1 or $count == 2 or $count == 3 or $count == 4)
  21.     {
  22.         echo "раза";
  23.     }
  24. }

вроде, работоспособная штука :)
p.s.
написал еще тогда, когда только начинал постигать php :) не ругайсяма :D кстати, до сих пор стоит на моем сайте :D
turikhay

 
Сообщения: 26
Зарегистрирован: 01 фев 2011, 15:50
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.

Re: Правильные окончания слов

Сообщение Noise Gate » 28 ноя 2011, 12:37

Александр писал(а):Если остаток от 5 до 12, то будет значение 0 - "дней"

Наверное, имеется ввиду, до 20. По крайей мере, в коде - именно так.

За это сообщение автора Noise Gate поблагодарил:
Александр
Noise Gate

 
Сообщения: 691
Зарегистрирован: 28 апр 2010, 12:34
Откуда: СПб
Благодарил (а): 31 раз.
Поблагодарили: 64 раз.

Re: Правильные окончания слов

Сообщение Александр » 28 ноя 2011, 20:52

Да, От 5 до 20 всегда 0 - "дней".
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
 
Автор темы
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45
Откуда: Санкт-Петербург
Благодарил (а): 126 раз.
Поблагодарили: 771 раз.

Re: Правильные окончания слов

Сообщение gpv123 » 03 мар 2012, 16:37

Набросал такой код:
  1. package
  2. {
  3.     /* Создаем функцию NumberCase:
  4.      *
  5.      * number - число;
  6.      * IpEch - слово в именительном падеже и в единственном числе;
  7.      * RpEch - слово в родительном падеже и в единственном числе;
  8.      * RpMch - слово в родительном падеже и во множественном числе;
  9.      */
  10.     public function NumberCase(number:Number, IpEch:String, RpEch:String, RpMch:String)
  11.     {
  12.         const END:String = (String(number).replace('.',',')) + ' ';// Тут хранится начало выдаваемой строки
  13.  
  14.         if (number < 0)
  15.         {
  16.             number = (-1*number);//Если число отрицательное, то делаем его положительным
  17.         }
  18.  
  19.         const NUM100:Number = number % 100;
  20.         const NUM10:Number = number % 10;
  21.         const NUM1:Number = number % 1;
  22.  
  23.         if (NUM1 > 0)
  24.         {
  25.             return END + RpEch;
  26.         }
  27.         else if (((NUM100 >= 5) && (NUM100 <= 20)) || (NUM10 >= 5) || (NUM100 == 0))
  28.         {
  29.             return END + RpMch;
  30.         }
  31.         else if (NUM10 == 1)
  32.         {
  33.             return END + IpEch;
  34.         }
  35.         else if ((NUM10 >= 2) && (NUM10 <= 4))
  36.         {
  37.             return END + RpEch;
  38.         }
  39.     }
  40. }

Проверял на:
  1. trace(NumberCase(          1, 'день', 'дня', 'дней')); //           1 день
  2. trace(NumberCase(         15, 'день', 'дня', 'дней')); //          15 дней
  3. trace(NumberCase(        1.1, 'день', 'дня', 'дней')); //         1,1 дня
  4. trace(NumberCase(        4.7, 'день', 'дня', 'дней')); //         4,7 дня
  5. trace(NumberCase(       1589, 'день', 'дня', 'дней')); //        1589 дней
  6. trace(NumberCase(   -156.753, 'день', 'дня', 'дней')); //    -156,753 дня
  7. trace(NumberCase(   64354165, 'день', 'дня', 'дней')); //    64354165 дней
  8. trace(NumberCase(      64564, 'день', 'дня', 'дней')); //       64564 дня
  9. trace(NumberCase(    1456748, 'день', 'дня', 'дней')); //     1456748 дней
  10. trace(NumberCase(532.4563746, 'день', 'дня', 'дней')); // 532,4563746 дня
  11. trace(NumberCase(-8574.56345, 'день', 'дня', 'дней')); // -8574,56345 дня
gpv123

 
Сообщения: 346
Зарегистрирован: 29 янв 2012, 20:57
Благодарил (а): 17 раз.
Поблагодарили: 73 раз.

Пред.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в Уроки на другие темы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron