|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - скрипт для написания суммы прописью |
|
PowerShell - скрипт для написания суммы прописью
|
Пользователь Сообщения: 114 |
Профиль | Отправить PM | Цитировать 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 Сообщения: 6581
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:43, 26-01-2024 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1181
|
Профиль | Отправить 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 Сообщения: 6581
|
Профиль | Отправить PM | Цитировать Да понадобилась функция, а времени на изобретение своего велосипеда не было.
Спасибо! |
------- Отправлено: 16:29, 27-01-2024 | #4 |
Crazy Сообщения: 1181
|
Профиль | Отправить 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 |
|