Главная / Web-программирование на PHP 5.2 / Каким будет результат выполнения следующего кода, если в форму передать число 15,52? <?php class NumToText { var $Mant = array(); var $Expon = array(); function NumToText() { } function SetMant($mant) { $this->Mant = $mant; } function SetExpon($expo

Каким будет результат выполнения следующего кода, если в форму передать число 15,52? <?php class NumToText { var $Mant = array(); var $Expon = array(); function NumToText() { } function SetMant($mant) { $this->Mant = $mant; } function SetExpon($expon) { $this->Expon = $expon; } function DescrIdx($ins) { if(intval($ins/10) == 1) // числа 10 - 19: 10 миллионов, 17 миллионов return 2; else { $tmp = $ins%10; if($tmp == 1) // 1: 21 миллион, 1 миллион return 0; else if($tmp >= 2 && $tmp <= 4) return 1; // 2-4: 62 миллиона else return 2; // 5-9 48 миллионов } } function DescrSot(&$in, $raz, $ar_descr, $fem = false) { $ret = ''; $conv = intval($in / $raz); $in %= $raz; $descr = $ar_descr[ $this->DescrIdx($conv%100) ]; if($conv >= 100) { $Sot = array('сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'); $ret = $Sot[intval($conv/100) - 1] . ' '; $conv %= 100; } if($conv >= 10) { $i = intval($conv / 10); if($i == 1) { $DesEd = array('десять', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать' ); $ret .= $DesEd[ $conv - 10 ] . ' '; $ret .= $descr; return $ret; } $Des = array('двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто' ); $ret .= $Des[$i - 2] . ' '; } $i = $conv % 10; if($i > 0) { if( $fem && ($i==1 || $i==2) ) { $Ed = array('одна', 'две'); $ret .= $Ed[$i - 1] . ' '; } else { $Ed = array('один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять' ); $ret .= $Ed[$i - 1] . ' '; } } $ret .= $descr; return $ret; } function Convert($sum) { $ret = ''; $Kop = 0; $Rub = 0; $sum = trim($sum); $sum = str_replace(' ', '', $sum); $sign = false; if($sum[0] == '-') { $sum = substr($sum, 1); $sign = true; } $sum = str_replace(',', '.', $sum); $Rub = intval($sum); $Kop = $sum*100 - $Rub*100; if($Rub) { if($Rub >= 1000000000) $ret .= $this->DescrSot($Rub, 1000000000, array('миллиард', 'миллиарда', 'миллиардов')) . ' '; if($Rub >= 1000000) $ret .= $this->DescrSot($Rub, 1000000, array('миллион', 'миллиона', 'миллионов') ) . ' '; if($Rub >= 1000) $ret .= $this->DescrSot($Rub, 1000, array('тысяча', 'тысячи', 'тысяч'), true) . ' '; $ret .= $this->DescrSot($Rub, 1, $this->Mant) . ' '; $ret[0] = chr( ord($ret[0]) + ord('A') - ord('a') ); } if($Kop < 10) $ret .= '0'; $ret .= $Kop . ' ' . $this->Expon[ $this->DescrIdx($Kop) ]; if($sign) $ret = '-' . $ret; return $ret; } } class ManyToText extends NumToText { function ManyToText() { $this->SetMant( array('рубль', 'рубля', 'рублей') ); $this->SetExpon( array('копейка', 'копейки', 'копеек') ); } } class MetrToText extends NumToText { function MetrToText() { $this->SetMant( array('метр', 'метра', 'метров') ); $this->SetExpon( array('сантиметр', 'сантиметра', 'сантиметров') ); } } ?> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"> <title>Example from intuit.ru</title> </HEAD> <BODY> <?php if( isset($HTTP_POST_VARS['num']) ) { $mt = new ManyToText(); $nt = new MetrToText(); echo $mt->Convert($HTTP_POST_VARS['num']) . '<BR />'; echo $nt->Convert($HTTP_POST_VARS['num']) . '<BR />'; } ?> <FORM ACTION ="<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" METHOD="post"> Input number:<BR /> <INPUT TYPE="text" NAME="num"><BR /> <INPUT TYPE="submit" VALUE=" GET "> </FORM> </BODY> </HTML>

вопрос

Правильный ответ:

сначала будет выведена строка: 'Пятнадцать рублей 52 копейки', а затем - 'Пятнадцать метров 52 сантиметра'
будет выведена строка: 'Пятнадцать рублей 52 копейки'
сначала будет выведена строка: 'Пятнадцать метров 52 сантиметра',а затем - 'Пятнадцать рублей 52 копейки'
будет выведена строка: 'Пятнадцать метров 52 сантиметра'
Сложность вопроса
53
Сложность курса: Web-программирование на PHP 5.2
92
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Какой человек ищет эти ответы интуит? Это же крайне просто
09 май 2020
Аноним
Зачёт всё. Лечу выпивать отмечать победу над тестом интут
10 фев 2018
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.