Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 18

Warning: Trying to access array offset on false in /home/u98739/softtime.ru/www/utils/currentforum.php on line 19

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Ответ 004 на задачу N 20
 
 автор: P@Sol   (21.08.2006 в 09:21)   письмо автору
 
 

В пятницу забыл с работы домой притащить свой вариант, в итоге только что до него добрался...может получу сколько-нибудь балов:)


<form action="index.php" method="post">
Введите десятичное число: <input type=text name=tnumber size=5> или
двоечное число: <input type=text name=dnumber size=5><br>
<input type=submit name="Преобразовать">
</form>
<?
function ttod($k)
{
        $dn = "";

        while ($k >= 2)
        {
                $m = $dn;
                $dn = $k%2;
                $dn = $dn.$m;

                if ($k%2 == 0)
                {
                        $k = $k/2;
                }
                else
                {
                        $k = ($k-$k%2)/2;
                }
        }
        if ($k == 1)  $dn = "1".$dn;
        if ($dn == 1) $dn = "0".$dn;
        return $dn;
}

function dtot($k)
{
        $dn = "";
        $l = 0;


        while ($k > 1)
        {
                $p = $k%10;
                $k = ($k-$k%10)/10;
                if ($p == 0)
                {
                        $l++;
                }
                else
                {
                        $dn += summ($p,$l);
                        $l++;
                }
        }
        if ($k == 1)  $dn += summ($k,$l);
        return $dn;
}
function summ($n,$k)
{
        $um = 2;
        for($i=1;$i<$k;$i++)
        {
                $um = $um*2;
        }
        $n = $n*$um;
        if($k==0) $n=$n;
        return $n;
}
if ($_POST["tnumber"]) echo $_POST["tnumber"]."<sub>10</sub> = ".ttod($_POST["tnumber"])."<sub>2</sub>";
elseif ($_POST["dnumber"]) echo $_POST["dnumber"]."<sub>2</sub> = ".dtot($_POST["dnumber"])."<sub>10</sub>";


?>

   
 
 автор: cheops   (21.08.2006 в 11:47)   письмо автору
 
   для: P@Sol   (21.08.2006 в 09:21)
 

Очень компактное решение, пожалуй самое компактное из представленных
     читабел правильно штраф дроб.часть сумма 
004     3        6       0       0        9

   
 
 автор: P@Sol   (21.08.2006 в 12:21)   письмо автору
 
   для: cheops   (21.08.2006 в 11:47)
 

спасибо