Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Склонение чисел / 18 сообщений из 18, страница 1 из 1
04.10.2004, 16:11
    #32722502
HalK2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
Никак немогу просклонять числа, т.е "Рубль, рубля, рублей" и.т.д.
Помогите пожалуйста создать условие.
...
Рейтинг: 0 / 0
04.10.2004, 16:29
    #32722563
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
Скачай решение

http://www.foxclub.ru/sol/index.php?act=view&id=251

И посмотри как там это реализовано
...
Рейтинг: 0 / 0
04.10.2004, 16:48
    #32722612
HalK2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
ВладимирМ, передаю число 100 этой ФУНКЦИИ, а она мне выдаёт "Ноль рублей 00 копеек", и так со всеми числами!!!
...
Рейтинг: 0 / 0
04.10.2004, 16:56
    #32722633
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
Это может быть, только в том случае, если ты передал не число, а строку. Надо передавать параметр примерно так:

?Money2str(100)

Т.е. параметр должен быть НЕ в кавычках.

Если бы ты посмотрел сам код, то увидел бы, что первыми командами идет проверка корректности переданных параметров. Если передается не числовое значение, то считается, что передали 0, чтобы не было сообщений об ошибках.
...
Рейтинг: 0 / 0
04.10.2004, 17:03
    #32722648
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
может это можно доработать ?
function (nn)
do case
case int(nn%10)=1 and (nn%100<10 or nn%100>20)
return 'рубль'
case int(nn%10)=2,3,4 and (nn%100<10 or nn%100>20)
return 'рубля'
otherwise
return 'рублей'
endcase
...
Рейтинг: 0 / 0
04.10.2004, 17:17
    #32722683
HalK2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
ВладимирМЭто может быть, только в том случае, если ты передал не число, а строку. Надо передавать параметр примерно так:

?Money2str(100)

Т.е. параметр должен быть НЕ в кавычках.

Если бы ты посмотрел сам код, то увидел бы, что первыми командами идет проверка корректности переданных параметров. Если передается не числовое значение, то считается, что передали 0, чтобы не было сообщений об ошибках.
Да, я ошибся
...
Рейтинг: 0 / 0
04.10.2004, 17:18
    #32722689
HalK2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
leafможет это можно доработать ?
function (nn)
do case
case int(nn%10)=1 and (nn%100<10 or nn%100>20)
return 'рубль'
case int(nn%10)=2,3,4 and (nn%100<10 or nn%100>20)
return 'рубля'
otherwise
return 'рублей'
endcase
Наверное можно, сейчас буду смотреть, спасибо Всем
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
04.05.2011, 09:10
    #37244721
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
HalK2,

Применила money2str, преобразует правильно, только вот не пойму как убрать вывод копеек. Выводит "сто рублей 00 копеек"
...
Рейтинг: 0 / 0
04.05.2011, 10:25
    #37244854
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
НадеждаМПрименила money2str, преобразует правильно, только вот не пойму как убрать вывод копеек. Выводит "сто рублей 00 копеек"
Данной процедурой это не предусмотрено. Это Вы должны сделать сами. Либо модифицируйте код преобразования, чтобы просто отсечь копейки (фрагмент IF m.lnI=6 ... ENDIF), либо удаляйте "хвост" после преобразования (найти "00" и удалить до конца)
...
Рейтинг: 0 / 0
04.05.2011, 11:00
    #37244929
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
ВладимирМ,

substr-ом?
...
Рейтинг: 0 / 0
04.05.2011, 11:27
    #37245005
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
Извратилась вот таким способом в отчете:

substr(money2str(int(splat)),1,len(money2str(int(splat)))-(len(money2str(int(splat)))-at(' 00 копеек',alltrim(money2str(int(splat))))))
...
Рейтинг: 0 / 0
04.05.2011, 11:30
    #37245010
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
только int() не надо
...
Рейтинг: 0 / 0
04.05.2011, 11:41
    #37245022
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
НадеждаМИзвратилась вот таким способом в отчете:

substr(money2str(int(splat)),1,len(money2str(int(splat)))-(len(money2str(int(splat)))-at(' 00 копеек',alltrim(money2str(int(splat))))))
Надежда, там вторым параметром в функции money2str ноль добавить - он сам отрежет копейки. Зачем изващатся, если в функции это реализовано...
...
Рейтинг: 0 / 0
04.05.2011, 11:42
    #37245024
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
Для версии VFP7 и старше

Код: plaintext
?GetWordNum(money2str(splat),  1 , "0123456789")
...
Рейтинг: 0 / 0
04.05.2011, 11:43
    #37245025
MAYAKOV_SV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
money2str(int(splat), 0) даст тот же вариант, что и с substr, может я ошибаюсь, но у меня все проходит.
...
Рейтинг: 0 / 0
04.05.2011, 11:45
    #37245033
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
MAYAKOV_SVНадежда, там вторым параметром в функции money2str ноль добавить - он сам отрежет копейки. Зачем изващатся, если в функции это реализовано...
Да, действительно, если второй параметр меньше или равен 0, то копейки не отображаются.
...
Рейтинг: 0 / 0
04.05.2011, 11:47
    #37245038
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
ВладимирМ,

Спасибо, сейчас проверю.
...
Рейтинг: 0 / 0
04.05.2011, 11:50
    #37245045
НадеждаМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Склонение чисел
Да действительно правильно. спасибо.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Склонение чисел / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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