скрипт для написания суммы прописью
Код:
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)))
}
Авторство не мое, переписал с Excel. Может пригодится кому.
|