Показать сообщение отдельно

Деление столбиком
  #619  
Старый 12.02.2009, 16:02
-=Static=-
Участник форума
Регистрация: 12.11.2006
Сообщений: 213
С нами: 10260776

Репутация: 185
По умолчанию Деление столбиком

PHP код:
<?php
/**
* Ф-ция выполняющая деления одного числа на другое столбиком (как в младших классах школы)
* Диапазон допустимых значений: Только положительные числа длинной от 1 до 100 символов.
* 
* $a - Делимое
* $b - Делитель
* 
* Возвращаемый результат: array(int Результат, int Остаток)
* 
* Коды ошибок:
* -1 = Делимое не попадает в допустимый диапазон
* -2 = Делитель не попадает в допустимый диапазон
* -3 = Делитель больше делимого
* -4 = Делитель <= 0
* -5 = Делимое  <= 0
*/

function columnDivision($a, $b)
{
    
$a = strval($a);
    
$b = strval($b);
    
$aLen = strlen($a);
    
$bLen = strlen($b);
    
    if (
$aLen < 1 || $aLen > 100) return -1;
    if (
$bLen < 1 || $bLen > 100) return -2;
    if (
$b > $a)              return -3;
    if (
$b <= 0)              return -4;
    if (
$a <= 0)              return -5;
    
    
    
    
$rest = substr($a, 0, $bLen);
    
$result = "";
    
    for(
$i = $bLen; $i <= $aLen; $i++) {
        
$j = 0;
        while(
$rest >= $b) {
           
$j++;
           
$rest -= $b; 
        }
        
$result .= $j;
        if (isset(
$a[$i])) $rest .= $a[$i];
    }
    
    return array(
intval($result), intval($rest));
}

if (
file_exists("input.txt")) {
    
$bufer = file_get_contents("input.txt");
    
$arInput = explode(" ", $bufer);
    
$arResult = columnDivision(intval($arInput[0]), intval($arInput[1]));
    
file_put_contents("output.txt", implode(" ", $arResult));
    echo 
'Division is complite. Result write in file <b>output.txt</b>';
} else {
    echo 
'No input file. <b>:(</b>';
}
 
Ответить с цитированием