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

  #548  
Старый 22.12.2008, 11:32
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
Провел на форуме:
9257858

Репутация: 979


Отправить сообщение для rushter с помощью ICQ
По умолчанию

Задание из ROA
https://forum.antichat.ru/showpost.php?p=990504&postcount=37
PHP код:
<?
$maxpages 
3;
$pagelines 3;
$lineend "\r\n";

function 
mas($n)
{
    global 
$pages$lineln$pagelines;
    
$p floor($n $pagelines);
    if (!isset(
$pages["p$p"]))
        
loadPage($p);
    return 
$pages["p$p"][$n $pagelines];
}

function 
setmas($n$value)
{
    global 
$pages$lineln$pagelines;
    
$p floor($n $pagelines);
    if (!isset(
$pages["p$p"]))
        
loadPage($p);
    
$pages["p$p"][$n $pagelines] = $value;
}

function 
loadPage($p)
{
    global 
$pages$lineln$pagelines$maxpages$sortfile$lineend;
    
fseek($sortfile$p $lineln $pagelines);
    
$data fread($sortfile$pagelines $lineln);
    
$pages["p$p"] = explode($lineendrtrim($data$lineend));
    if (
count($pages) > $maxpages)
        
flushPage();
}

function 
flushPage()
{
    global 
$pages$lineln$pagelines$maxpages$sortfile$lineend;
    
reset($pages);
    
$p intval(substr(key($pages), 1));
    
$data implode($lineendarray_shift($pages)) . $lineend;
    
fseek($sortfile$p $lineln $pagelines);
    
fwrite($sortfile$data);
}

function 
sortTypeFile($file)
{
    global 
$sortfile$sortlines$pages$lineln$lineend;
    
$pages = array();
    
$sortlines 1;
    
$sortfile fopen($file"r+b");
    
$lineln strlen(fgets($sortfile));
    
$n $lineln strlen($lineend);
    while (!
feof($sortfile))
    {
        if (
strlen(rtrim(fgets($sortfile), $lineend)) != $n)
            break;
        
$sortlines++;
    }
    
fseek($sortfile0);
    
$n 0;
    for (
$i 0$i $sortlines$i++)
    {
        
$min mas($i);
        
$cur $min;
        
$minpos $i;
        for (
$j $i 1$j $sortlines$j++)
        {
            
$a mas($j);
            if (
$a $min)
            {
                
$min $a;
                
$minpos $j;
            }
        }
        if (
$minpos != $i)
        {
            
setmas($minpos$cur);
            
setmas($i$min);
        }
    }
    while (
count($pages) > 0)
        
flushPage();
    
fclose($sortfile);
}

sortTypeFile("file.txt");
?>
 
Ответить с цитированием