U.Helper

19 Июня 2010 02:12
Главная » Разработки » Разработки для модуля "Все" » Склонение существительных с числами на стороне uCoz-сервера
Ссылка на генератор

Ссылка на генератор кода, правильно склоняющего существительные с числами на стороне uCoz-сервера, например:
  • 5 сообщений;
  • 221 сообщение;
  • 362 сообщения.
    19.06.2010: исправлен недочёт, не позволяющий использовать изменяемую часть слова из более, чем одной буквы. Спасибо uWebу.

    Объяснение работы сгенерированного кода

  • Теорчасть — русскоязычная.
    Существительное имеет три вида окончаний в зависимости от числа — если число оканчивается на
    1. 0, 5, 6, 7, 8, 9 (5 сообщений);
    2. 1 (221 сообщение);
    3. 2, 3, 4 (362 сообщения).
    Но есть исключение: если число оканчивается на двузначное число второго десятка — 11, 12, 13, 14, то оно имеет окончание 1-ого варианта. (15, 16, ..., 20 — не исключения.)
  • Практическая часть — кодинг.
    Понятно, что в таком формате, как написано в теорчасти написать можно, но это будет очень длинно и некрасиво. Поэтому перефразируем условия так:
    1. Если число
    - оканчивается на 0, или
    - на цифру, большую 4, или
    - на двузначное число, большее 10 и меньшее 15, то
    оно имеет окончание 1-ого варианта (5 сообщений); иначе
    2. если число оканчивается на 1, то оно имеет окончание 2-ого варианта (221 сообщение); иначе
    3. оно имеет окончание 3-ого варианта (362 сообщения).
    Как же узнать, на что оканчивается число? Чтобы узнать последнюю цифру, нужно взять остаток числа от деления на 10; чтобы две последних цифры — от деления на 100. Остаток от деления в uCoz — %.


    Правила использования:

    • Все права на публикуемые скрипты принадлежат их авторам!
    • Запрещается распространение скриптов без указания автора!
    • Запрещается "затирание" копирайтов!
  • Рейтинг: ← 14 →
    Модуль: Все | 3263 просмотра | Автор: NecroProger | Добавлено: 19 Июня 2010 | Пример | Теги: существительные, генератор, склонение, числа
    26 комментариев

    0
    uWeb[Материал] 03:00, 19 Июня 2010
    Просмотр[ов]
    Цитировать
    0
    NecroProger[Материал] 12:04, 19 Июня 2010
    В чёи вопрос, не понял.
    Цитировать
    0
    cucYa[Материал] 14:12, 19 Июня 2010
    Сообщение без смысла, прям как спам biggrin
    Цитировать
    0
    Бармалей[Материал] 15:15, 19 Июня 2010
    Смысл есть, но не всем дано его увидеть.
    Цитировать
    0
    cucYa[Материал] 15:39, 19 Июня 2010
    Ну если он про генератор, то да.
    Цитировать
    0
    NecroProger[Материал] 17:02, 19 Июня 2010
    Исправил, спасибо.
    Кстати, в случае с нулевым в каком-то случаем окончанием ("1 просмотр") код становится несколько избыточным; возможно, потом доделаю (придётся делать лишние проверки).
    Цитировать
    Сайт
    0
    Бармалей[Материал] 09:01, 19 Июня 2010
    А как быть с днями и годами?
    Цитировать
    0
    NecroProger[Материал] 16:56, 19 Июня 2010
    А в чём с ними проблема?
    Цитировать
    0
    Бармалей[Материал] 17:43, 19 Июня 2010
    В том же, в чем и с просмотрами. Только в случае с годами можно еще оптимизировать.
    Цитировать
    0
    NecroProger[Материал] 19:02, 19 Июня 2010
    Не понял: почему просто не несколько раз применить этот код? wacko
    А год можно оптимизировать тем, что у него нулевое окончание в форме 121 год.
    Цитировать
    0
    угу[Материал] 15:58, 19 Июня 2010
    А не могли бы Вы реализовать функцию: сегодня нас посетило N- количество пользователей в цифрах. Как на php. Спасибо за ответ.
    Цитировать
    E-Mail
    0
    cucYa[Материал] 18:07, 19 Июня 2010
    Во флудилке он выкладывал ссылку.
    Цитировать
    0
    Cookie[Материал] 17:22, 29 Июня 2010
    Пытался по этой системе сделать склонение для пола,не получилось!Может кто-то знает способ?
    Цитировать
    E-Mail
    0
    cucYa[Материал] 16:51, 30 Июня 2010
    Как вы собираетесь склонять слово "Пол"?
    Цитировать
    Сайт
    0
    Task[Материал] 15:09, 30 Июня 2010
    Сегодня нас посетил: 1 людь. biggrin
    Цитировать
    0
    uWeb[Материал] 14:26, 01 Июля 2010
    biggrin человек
    Цитировать
    0
    mirdano[Материал] 18:45, 19 Июля 2010
    happy
    Цитировать
    0
    Hak[Материал] 19:37, 08 Августа 2010
    Хорошая штука, помогла!)
    Цитировать
    0
    Liiion911[Материал] 23:48, 15 Августа 2010
    Вот готовая функция, проще и удобнее ) на стороне браузера....

    function stato(n, form1, form2, form5) {
    var n = n % 100;
    var n1 = n % 10;

    if (n >= 5 && n <= 20) return form5;
    else if (n1 > 1 && n1 < 5) return form2;
    else if (n1 == 1) return form1;

    return form5;
    }

    document.write("Сейчас на сайте " + online + stato(online, " человек", " человека", " человек"));

    Цитировать
    E-MailСайт
    0
    Бармалей[Материал] 23:25, 19 Августа 2010
    На стороне сервера лучше.
    Цитировать
    -1
    Liiion911[Материал] 23:50, 15 Августа 2010
    автор кода: http://logical-portal.ru/forum/3-15776-1
    Цитировать
    E-MailСайт
    0
    kanat07[Материал] 08:40, 20 Августа 2010
    wtf man wacko
    Цитировать
    0
    Dr_KoshMarov[Материал] 00:25, 06 Октября 2010
    Liiion911, нуб? Это 2 разных кода!
    Цитировать
    0
    Jack[Материал] 09:24, 21 Августа 2011
    Обновите ссылку на генератор
    Цитировать
    Сайт
    0
    vadim-narochnyi[Материал] 11:40, 18 Января 2012
    Дайте ссылку рабочую!
    Цитировать
    0
    Дмитрий1[Материал] 09:03, 20 Сентября 2012
    vadim-narochnyi, Jack, держите http://fi4a.ru/index/0-10
    Цитировать
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]

    © U.Helper 2007-2024 Используются технологии uCoz