|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - скрипт для написания суммы прописью |
|
|
PowerShell - скрипт для написания суммы прописью
|
|
Пользователь Сообщения: 114 |
Function Amount {
param ($Argument)
$Arg1 = @("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
$Arg2 = @("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ")
$Arg3 = @("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ")
$Arg4 = @("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
$Arg5 = @("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
If ($Argument -le 0) {
"ноль"
break
}
$Units = Levels -Number $Argument -Degree 1
$Dozen = Levels -Number $Argument -Degree 2
$Hundred = Levels -Number $Argument -Degree 3
$Thousand = Levels -Number $Argument -Degree 4
$Dozen_Thousand = Levels -Number $Argument -Degree 5
$Hundred_Thousand = Levels -Number $Argument -Degree 6
$millions = Levels -Number $Argument -Degree 7
$Dozen_Millions = Levels -Number $Argument -Degree 8
switch -Regex ($millions) {
1 {$millions_text = $Arg1[$millions] + "миллион "}
"[2-4]" {$millions_text = $Arg1[$millions] + "миллиона "}
"[5-9]" {$millions_text = $Arg1[$millions] + "миллионов "}
}
switch -Regex ($Dozen_Millions) {
1 {$millions_text = $Arg5[$millions] + "миллионов "; break}
"[2-9]" {$Dozen_Millions_text = $Arg2[$Dozen_Millions]}
}
switch -regex($Thousand){
0 { If ($Dozen_Thousand -gt 0) { $Thousand_text = $Arg4[$Thousand] + "тысяч "}}
1 {$Thousand_text = $Arg4[$Thousand] + "тысяча "}
"[2-4]" {$Thousand_text = $Arg4[$Thousand] + "тысячи "}
"[5-9]" {$Thousand_text = $Arg4[$Thousand] + "тысяч "}
}
switch -Regex ($Dozen_Thousand){
1 {$Thousand_text = $Arg5[$Thousand] + "тысяч "; break}
"[2-9]" {$Dozen_Thousand_text = $Arg2[$Dozen_Thousand]}
}
$Hundred_Thousand_text = $Arg3[$Hundred_Thousand]
If (($Dozen_Thousand -eq 0) -And ($Thousand -eq 0) -And ($Hundred_Thousand -gt 0))
{
"тысяч"
$Hundred_Thousand_text = $Hundred_Thousand_text + " тысяч "
}
$Units_text = $Arg1[$Units]
switch -Regex ($Dozen){
1 {$Units_text = $Arg5[$Units]}
"[2-9]" {$Dozen_text = $Arg2[$Dozen]}
}
$Hundred_text = $Arg3[$Hundred]
$Amount = $Dozen_Millions_text + $millions_text + $Hundred_Thousand_text + $Dozen_Thousand_text + $Thousand_text + $Hundred_text + $Dozen_text + $Units_text
$Amount
}
Function Levels {
param ($Number, $Degree)
[Math]::Floor([Math]::Floor($Number - ([Math]::Pow(10,$Degree)) * ([Math]::Floor($Number / ([Math]::Pow(10,$Degree))))) / ([Math]::Pow(10,$Degree-1)))
}
|
|
|
Отправлено: 18:51, 24-04-2015 |
|
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 14:43, 26-01-2024 | #2 |
|
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
![]() function levels {
#((n-10^k*(n//10^k))//(10^(k-1))
param ([decimal]$number, [int]$degree)
[decimal]::truncate(($number-([math]::pow(10,$degree))*
[decimal]::truncate($number/[math]::pow(10,$degree)))/
[math]::pow(10,$degree-1))
}
function Amount {
param ([bigint]$argument)
if($argument -lt -999999999999 -or $argument -gt 999999999999){
return $argument
} elseif ($argument -eq 0){
return 'ноль'
} elseif ($argument -lt 0){$argument=[bigint]::abs($argument);$m = 'минус '}
$arg1 = @('','один ','два ','три ','четыре ','пять ','шесть ','семь ','восемь ','девять ')
$arg2 = @('','десять ','двадцать ','тридцать ','сорок ','пятьдесят ','шестьдесят ',
'семьдесят ','восемьдесят ','девяносто ')
$arg3 = @('','сто ','двести ','триста ','четыреста ','пятьсот ','шестьсот ','семьсот ',
'восемьсот ','девятьсот ')
$arg4 = @('','одна ','две ','три ','четыре ','пять ','шесть ','семь ',
'восемь ', 'девять ')
$arg5 = @('десять ','одиннадцать ','двенадцать ','тринадцать ','четырнадцать ',
'пятнадцать ','шестнадцать ','семнадцать ','восемнадцать ','девятнадцать ')
$units = levels -n $argument -d 1
$dicker = levels -n $argument -d 2
$hundred = levels -n $argument -d 3
$thousand = levels -n $argument -d 4
$dicker_thousand = levels -n $argument -d 5
$hundred_thousand = levels -n $argument -d 6
$millions = levels -n $argument -d 7
$dicker_millions = levels -n $argument -d 8
$hundred_millions = levels -n $argument -d 9
$billions = levels -n $argument -d 10
$dicker_billions = levels -n $argument -d 11
$hundred_billions = levels -n $argument -d 12
$units_t = $arg1[$units]
switch -r ($dicker){
1 {$units_t = $arg5[$units]}
'[2-9]' {$dicker_t = $arg2[$dicker]}
}
$hundred_t = $arg3[$hundred]
switch -r ($thousand){
0 { if ($dicker_thousand -gt 0) { $thousand_t = $arg4[$thousand] + 'тысяч '}}
1 {$thousand_t = $arg4[$thousand] + 'тысяча '}
'[2-4]' {$thousand_t = $arg4[$thousand] + 'тысячи '}
'[5-9]' {$thousand_t = $arg4[$thousand] + 'тысяч '}
}
switch -r ($dicker_thousand){
1 {$thousand_t = $arg5[$thousand] + 'тысяч '; break}
'[2-9]' {$dicker_thousand_t = $arg2[$dicker_thousand]}
}
$hundred_thousand_t = $arg3[$hundred_thousand]
if (($dicker_thousand -eq 0) -and ($thousand -eq 0) -and ($hundred_thousand -gt 0)) {
$hundred_thousand_t = $hundred_thousand_t + 'тысяч '
}
switch -r ($millions) {
0{if($dicker_millions -gt 0){$millions_t=$arg1[$millions]+'миллионов '}}
1 {$millions_t = $arg1[$millions] + 'миллион '}
'[2-4]' {$millions_t = $arg1[$millions] + 'миллиона '}
'[5-9]' {$millions_t = $arg1[$millions] + 'миллионов '}
}
switch -r ($dicker_millions) {
1 {$millions_t = $arg5[$millions] + 'миллионов '; break}
'[2-9]' {$dicker_millions_t = $arg2[$dicker_millions]}
}
$hundred_millions_t = $arg3[$hundred_millions]
if (($dicker_millions -eq 0) -and ($millions -eq 0) -and ($hundred_millions -gt 0)) {
$hundred_millions_t = $hundred_millions_t + 'миллионов '
}
switch -r ($billions) {
0 {if($dicker_billions -gt 0){$billions_t=$arg1[$millions]+'миллиардов '}}
1 {$billions_t = $arg1[$billions] + 'миллиард '}
'[2-4]' {$billions_t = $arg1[$billions] + 'миллиарда '}
'[5-9]' {$billions_t = $arg1[$billions] + 'миллиардов '}
}
switch -r ($dicker_billions) {
1 {$billions_t = $arg5[$billions] + 'миллардов '; break}
'[2-9]' {$dicker_billions_t = $arg2[$dicker_billions]}
}
$hundred_billions_t = $arg3[$hundred_billions]
if (($dicker_billions -eq 0) -and ($billions -eq 0) -and ($hundred_billions -gt 0)) {
$hundred_billions_t = $hundred_billions_t + 'миллиардов '
}
$amount = $m+$hundred_billions_t+$dicker_billions_t+$billions_t+$hundred_millions_t+
$dicker_millions_t+$millions_t+$hundred_thousand_t+$dicker_thousand_t+$thousand_t+
$hundred_t+$dicker_t+$units_t
return $amount
}
amount $args[0]
|
|
|
------- Отправлено: 15:22, 27-01-2024 | #3 |
|
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Да понадобилась функция, а времени на изобретение своего велосипеда не было.
Спасибо! |
|
------- Отправлено: 16:29, 27-01-2024 | #4 |
|
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
||
|
------- Отправлено: 16:46, 27-01-2024 | #5 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| 2003/XP/2000 - Сумма прописью для MS Word версии 2003 и выше | Smolenkov_BN | Microsoft Office (Word, Excel, Outlook и т.д.) | 2 | 18-08-2013 18:23 | |
| RAID - RAID для написания музыки высокого разрешения (96kHz). Нужен совет | sad1922 | Накопители (SSD, HDD, USB Flash) | 10 | 09-04-2011 23:58 | |
| Любой язык - Учебники по JavaScript для написания скриптов для Adobe Photoshop | Lan-Laboratory | Скриптовые языки администрирования Windows | 1 | 26-05-2010 13:59 | |
| .NET - *SOFT* | C# vs PHP для написания небольших скриптов | Vlad Drakula | Программирование и базы данных | 12 | 30-07-2006 23:25 | |
| Посоветуйте лучший редактор для написания сайта | renat | Вебмастеру | 28 | 09-02-2005 17:51 | |
|