vitcom2
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору не помню откуда, но думаю кому нить пригодиться СУММА ПРОПИСЬЮ <? // Функция парсирования триады // $num - целое число от 0 до 999 // $words - массив, в котором элемент с индексом // 0 - написание числа 1 (например - "один", "одна") // 1 - написание числа 2 (аналогично) // 2 - единицы в единственном числе им.падеже("рубль") // 3 - единицы в единственном числе род.падеже("рубля") // 4 - единицы во множественном числе им.падеже("рублей") Function ParseTriad($num,$words) { $hundreds = array("",'сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот','восемьсот','девятьсот'); $decads = array('двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят', 'восемьдесят','девяносто'); $fdecads = array('десять','одиннадцать','двенадцать','тринадцать','четырнадцать', 'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать'); $ones = array("",$words[0],$words[1],'три','четыре','пять','шесть','семь','восемь','девять'); $result = ""; $h = floor($num / 100); $result .= $hundreds[$h]; $d = floor(($num - $h * 100) / 10); $c = ($num - $h * 100 - $d*10); $result.=($result!="")?" ":""; if ($d==1) {$result .= $fdecads[$c];} else {if ($d>1) $result .= $decads[$d-2] . " "; $result .=$ones[$c];} $result.=($result!="")?" ":""; switch ($c) { case 1: $result .= ($d!=1)?$words[2]:$words[4]; break; case 2: case 3: case 4: $result .= ($d!=1)?$words[3]:$words[4]; break; default: if ($num > 0) {$result .= $words[4];} } return $result; } // Функция возвращает число прописью // $num - любое целое число (в данной реализации до 10^12-1) // $upcase - булев параметр, если тру, то строка с заглавной буквы Function ParseSum($num,$upcase) { $md = floor($num/1e9); $m = floor(($num - $md*1e9)/1e6); $t = floor(($num - $md*1e9 - $m*1e6)/1e3); $h = floor($num - $md*1e9 - $m*1e6 - $t*1e3); $result = ParseTriad($md,array('один','два','миллиард','миллиарда','миллиардов')); $result .=($result!="")?" ":""; $result .= ParseTriad($m,array('один','два','миллион','миллиона','миллионов')); $result .=($result!="")?" ":""; $result .= ParseTriad($t,array('одна','две','тысяча','тысячи','тысяч')); $result .=($result!="")?" ":""; $result .= ParseTriad($h,array('один','два','рубль','рубля','рублей')); $result = $upcase?ucfirst($result):$result; return $result; } ?> |