fork(1) download
  1. <?php
  2. // Staring straight up into the sky ... oh my my
  3.  
  4. /* Возвращает соответствующую числу форму слова: 1 рубль, 2 рубля, 5 рублей */
  5. function inclineWord($number) {
  6. if (($number % 100 >= 10) && ($number % 100 <= 20)) {
  7. $number = " рублей";
  8. }
  9. elseif (($number % 10 == 0) || ($number % 10 >= 5)) {
  10. $number = " рублей";
  11. }
  12. elseif (($number % 10 >= 2) && ($number % 10 <= 4)) {
  13. $number = " рубля";
  14. }
  15. else {
  16. $number = " рубль";
  17. }
  18. return $number;
  19. }
  20.  
  21. /* Разбивает число на разряды (по три цифры) и посылает их обрабатывать в функцию smallNumberToText*/
  22. function splitNumberToText($number) {
  23. $million = floor($number / 1000000);
  24. if ($million != 0) {
  25. $word = smallNumberToText($million, 1);
  26. if (($million % 10 == 1) && ($million != 11)) {
  27. $word = $word . " миллион ";
  28. }
  29. elseif (($million % 10 >= 2) && ($million % 10 <= 4)) {
  30. $word = $word . " миллиона ";
  31. }
  32. else {
  33. $word = $word . " миллионов ";
  34. }
  35. }
  36. $x = $number % 1000000;
  37. $thousand = floor($x / 1000);
  38. if ($thousand != 0) {
  39. $word = $word . smallNumberToText($thousand, 2);
  40. if (($thousand % 10 == 1) && ($thousand != 11)) {
  41. $word = $word . " тысяча ";
  42. }
  43. elseif (($thousand % 10 >= 2) && ($thousand % 10 <= 5)) {
  44. $word = $word . " тысячи ";
  45. }
  46. else {
  47. $word = $word . " тысяч ";
  48. }
  49. }
  50. $hundred = $number % 1000;
  51. $word = $word . smallNumberToText($hundred);
  52. return $word;
  53. }
  54. /*
  55.   Преобразует числа от 0 до 999 в текст. Параметр $isFemale равен нулю,
  56.   если мы считаем число для мужского рода (один рубль),
  57.   и 1 — для женского (одна тысяча)
  58.   */
  59. function smallNumberToText($number, $isFemale) {
  60. $spelling = array(
  61. 0 => 'ноль', 10 => 'десять', 100 => 'сто',
  62. 1 => 'один', 11 => 'одиннадцать', 20 => 'двадцать', 200 => 'двести',
  63. 2 => 'два', 12 => 'двенадцать', 30 => 'тридцать', 300 => 'триста',
  64. 3 => 'три', 13 => 'тринадцать', 40 => 'сорок', 400 => 'четыреста',
  65. 4 => 'четыре', 14 => 'четырнадцать', 50 => 'пятьдесят', 500 => 'пятьсот',
  66. 5 => 'пять', 15 => 'пятнадцать', 60 => 'шестьдесят', 600 => 'шестьсот',
  67. 6 => 'шесть', 16 => 'шестнадцать', 70 => 'семьдесят', 700 => 'семьсот',
  68. 7 => 'семь', 17 => 'семнадцать', 80 => 'восемьдесят', 800 => 'восемьсот',
  69. 8 => 'восемь', 18 => 'восемнадцать', 90 => 'девяносто', 900 => 'девятьсот',
  70. 9 => 'девять', 19 => 'девятнадцать'
  71. );
  72.  
  73. if ($isFemale == 2) {
  74. $spelling[1] = 'одна';
  75. $spelling[2] = 'две';
  76. }
  77.  
  78. if ($number == 0) {
  79. $word = $spelling[$number];
  80. return $word;
  81. }
  82.  
  83. $firstDigit = floor($number / 100);
  84. if (($firstDigit != 0) && ($number >= 100)) {
  85. $firstDigit = $firstDigit * 100;
  86. $word = $word . $spelling[$firstDigit];
  87. }
  88.  
  89. $x = $number % 100;
  90. if (($x >= 11) && ($x <= 19)) {
  91. $word = $word . ' ' . $spelling[$x];
  92. }
  93. else {
  94. $secondDigit = floor($x / 10);
  95. if (($secondDigit != 0) && ($number >= 10)){
  96. $secondDigit = $secondDigit * 10;
  97. $word = $word . ' ' . $spelling[$secondDigit];
  98. }
  99. $thirdDigit = $number % 10;
  100. if ($thirdDigit != 0) {
  101. $word = $word . ' ' . $spelling[$thirdDigit];
  102. }
  103. }
  104. return $word;
  105. }
  106.  
  107. function numberToText($number) {
  108. $number = splitNumberToText($number) . ' ' . '(' . $number . ')' . inclineWord($number);
  109. return $number;
  110. }
  111.  
  112. $amount1 = mt_rand(1,99999999);
  113. $text1 = numberToText($amount1);
  114. echo "На вашем счету{$text1}\n";
  115.  
  116. $amount2 = mt_rand(1,99999999);
  117. $text2 = numberToText($amount2);
  118. echo "На вашем счету{$text2}\n";
  119.  
  120. $amount3 = mt_rand(1,99999999);
  121. $text3 = numberToText($amount3);
  122. echo "На вашем счету{$text3}\n";
  123.  
  124. $amount4 = mt_rand(1,99999999);
  125. $text4 = numberToText($amount4);
  126. echo "На вашем счету{$text4}\n";
Success #stdin #stdout #stderr 0.02s 24448KB
stdin
Standard input is empty
stdout
На вашем счету шестьдесят семь миллионов шестьсот девяносто одна тысяча восемьсот семьдесят семь (67691877) рублей
На вашем счету пятьдесят пять миллионов девятьсот семьдесят три тысячи триста четырнадцать (55973314) рублей
На вашем счету пятьдесят семь миллионов четыреста семьдесят четыре тысячи девятьсот пятьдесят три (57474953) рубля
На вашем счету сорок семь миллионов шестьсот пятьдесят семь тысяч  сорок четыре (47657044) рубля
stderr
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 99
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Warning:  Missing argument 2 for smallNumberToText(), called in /home/tOaMxJ/prog.php on line 53 and defined in /home/tOaMxJ/prog.php on line 61
PHP Notice:  Undefined variable: isFemale in /home/tOaMxJ/prog.php on line 75
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 99
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Warning:  Missing argument 2 for smallNumberToText(), called in /home/tOaMxJ/prog.php on line 53 and defined in /home/tOaMxJ/prog.php on line 61
PHP Notice:  Undefined variable: isFemale in /home/tOaMxJ/prog.php on line 75
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 99
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Warning:  Missing argument 2 for smallNumberToText(), called in /home/tOaMxJ/prog.php on line 53 and defined in /home/tOaMxJ/prog.php on line 61
PHP Notice:  Undefined variable: isFemale in /home/tOaMxJ/prog.php on line 75
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 99
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 88
PHP Warning:  Missing argument 2 for smallNumberToText(), called in /home/tOaMxJ/prog.php on line 53 and defined in /home/tOaMxJ/prog.php on line 61
PHP Notice:  Undefined variable: isFemale in /home/tOaMxJ/prog.php on line 75
PHP Notice:  Undefined variable: word in /home/tOaMxJ/prog.php on line 99