Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Просклонять слово минуты / 25 сообщений из 45, страница 1 из 2
19.07.2018, 16:49
    #39676348
Rphoenix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Здравствуйте. Если есть переменная Integer (00-60), при которой || ' минут'. То как просклонять в зависимости от цифры слово "минут"?
...
Рейтинг: 0 / 0
19.07.2018, 16:54
    #39676353
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
имхо, тут программист нужен
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.07.2018, 16:56
    #39676355
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Необязательно - можно просто сократить слово.
...
Рейтинг: 0 / 0
19.07.2018, 17:10
    #39676362
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Rphoenix,

Делаешь case и пишешь туда все возможные варианты. Или в хранимке. Или на клиенте. По-английски вообще просто.
...
Рейтинг: 0 / 0
19.07.2018, 18:14
    #39676417
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Мин.
...
Рейтинг: 0 / 0
20.07.2018, 09:17
    #39676609
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Ровно также, как слово "рубль" в алгоритмах суммы прописью. Этих алгоритмов, как с массивами, так и с CASE тьма тьмущая.
...
Рейтинг: 0 / 0
20.07.2018, 09:46
    #39676625
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Код: sql
1.
2.
3.
4.
5.
6.
case
  when minutes between 5 and 20 then 'минут'
  when mod(minutes, 10) = 1 then 'минута'
  when mod(minutes, 10) between 2 and 4 then 'минуты'
  else 'минут'
end
...
Рейтинг: 0 / 0
20.07.2018, 09:57
    #39676635
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSery, ты забыл про teen исключения - between 11 and 19.
...
Рейтинг: 0 / 0
20.07.2018, 10:05
    #39676643
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSery, в том плане, что мы не знаем какое значение может принимать переменная, содержащая минуты. Там вполне может быть более 100 минут.
...
Рейтинг: 0 / 0
20.07.2018, 10:08
    #39676647
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
rdb_dev,

Автор чётко поставил задачу.
Ну ладно, пусть будет для любого целого.

Код: sql
1.
2.
3.
4.
5.
6.
case
  when mod(minutes, 100) between 5 and 20 then 'минут'
  when mod(minutes, 10) = 1 then 'минута'
  when mod(minutes, 10) between 2 and 4 then 'минуты'
  else 'минут'
end
...
Рейтинг: 0 / 0
20.07.2018, 10:11
    #39676652
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSery,

вот только хотел посоветовать тебя дождаться, уж ты точно не вытерпишь

зы. может, после этого сообщения добавить еще пост с линками на наиболее частые подобные вопросы?
...
Рейтинг: 0 / 0
20.07.2018, 10:26
    #39676668
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Ivan_PisarevskyМин.+1.
А еще лучше - min.
...
Рейтинг: 0 / 0
20.07.2018, 10:29
    #39676672
rdb_dev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSeryrdb_dev,

Автор чётко поставил задачу.У меня как обычно - глаза на ж...

З.Ы. С утра от жары бошка раскалывается и таблетка не помогает.
...
Рейтинг: 0 / 0
20.07.2018, 10:37
    #39676683
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Док,

Что-то сомневаюсь, что будет польза.
Туда всё равно никто не смотрит, а поиск по ключевым словам по форуму нормально работает.

Щас даже вот это нашёл. Уже и забыл про него.
...
Рейтинг: 0 / 0
20.07.2018, 10:48
    #39676698
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSeryАвтор чётко поставил задачу.



Автор сказал "просклонять"
А тут только именительный падеж.
...
Рейтинг: 0 / 0
20.07.2018, 10:50
    #39676699
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
982183,

Т.к. "просклонять от цифры" нельзя, а только от падежа, то автокоррекция срабатывает как "указать правильное окончание".
...
Рейтинг: 0 / 0
20.07.2018, 10:50
    #39676700
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Отжеж вредный народ. Нет чтобы спасибо сказать.
Ну ждите теперь все падежи для каждого случая...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.07.2018, 10:51
    #39676702
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSery> Т.к. "просклонять от цифры" нельзя, а только от падежа

Тут даже я не понял. 37 минутами. 41 минутой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.07.2018, 10:54
    #39676707
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Гаджимурадов Рустам,

И как же падёж у тебя зависит от цифры?
Для указания падежа, как минимум, ещё один параметр нужен - сам падёж.
...
Рейтинг: 0 / 0
20.07.2018, 11:00
    #39676713
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Для русского (для других языков может быть не три варианта!)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
// http://localization-guide.readthedocs.org/en/latest/l10n/pluralforms.html
type
  TPluralForm = 0..2;

function GetPluralForm(Number: Integer): TPluralForm;
begin
  if ( (Number mod 10 = 1) and (Number mod 100 <> 11) ) then
    Result := 0
  else if (Number mod 10 in [2..4]) and
          ( (Number mod 100 < 10) or (Number mod 100 >= 20) ) then
    Result := 1
  else
    Result := 2;
end;
...
Рейтинг: 0 / 0
20.07.2018, 11:06
    #39676717
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Без 1 минуты.
Подожди 1 минуту.
Прошла 1 минута.
...
Рейтинг: 0 / 0
20.07.2018, 11:11
    #39676725
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Alibek B.Без 1 минуты.
Подожди 1 минуту.
Прошла 1 минута.Жуть.
Я ещё могу понять лентяев, у которых пальцы не шевелятся, но, блин, заменять числительные числами - кошмарный кошмар.
...
Рейтинг: 0 / 0
20.07.2018, 11:13
    #39676728
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
WildSery> Для указания падежа, как минимум, ещё один параметр нужен - сам падёж.

Падёж бывает у скота. Теоретически возможно 6 падежей,
а как их CASE-ить, через CASE padej 1..6 или ещё как - не суть.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.07.2018, 11:15
    #39676730
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Basil A. Sidorov> Я ещё могу понять лентяев, у которых пальцы не шевелятся,
Basil A. Sidorov> но, блин, заменять числительные числами - кошмарный кошмар.

Странная логика. Ну давай, 0,14285714285714285714285714285714 прописью.
Только чур сам, а не через программу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.07.2018, 11:17
    #39676733
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Просклонять слово минуты
Ещё лучше 0,043478260869565217391304347826087 - тут цикл длиннее. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Просклонять слово минуты / 25 сообщений из 45, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]