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

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

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

?Money2str(100)

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

Если бы ты посмотрел сам код, то увидел бы, что первыми командами идет проверка корректности переданных параметров. Если передается не числовое значение, то считается, что передали 0, чтобы не было сообщений об ошибках.
...
Рейтинг: 0 / 0
Склонение чисел
    #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
Склонение чисел
    #32722683
Фотография HalK2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЭто может быть, только в том случае, если ты передал не число, а строку. Надо передавать параметр примерно так:

?Money2str(100)

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

Если бы ты посмотрел сам код, то увидел бы, что первыми командами идет проверка корректности переданных параметров. Если передается не числовое значение, то считается, что передали 0, чтобы не было сообщений об ошибках.
Да, я ошибся
...
Рейтинг: 0 / 0
Склонение чисел
    #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
Период между сообщениями больше года.
Склонение чисел
    #37244721
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HalK2,

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

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

substr(money2str(int(splat)),1,len(money2str(int(splat)))-(len(money2str(int(splat)))-at(' 00 копеек',alltrim(money2str(int(splat))))))
...
Рейтинг: 0 / 0
Склонение чисел
    #37245010
НадеждаМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только int() не надо
...
Рейтинг: 0 / 0
Склонение чисел
    #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
Склонение чисел
    #37245024
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для версии VFP7 и старше

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

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


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