[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    MegaDeth, ответ 13?
     
  2. MegaDeth

    MegaDeth Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    192
    Likes Received:
    72
    Reputations:
    13
    мм... вообщето должно получится 9... в данном случе..
    если так то прямоугольник разширится до 4х3 что будет = 12... вообщем дрянь дело нада придумывать другой алгоритм...
    PHP:
     0 0 2 4 
    0 0 3 3 
    для удобства взял начало обеих прямоугольников с начала координат то не всегда так...
     
  3. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    Хм...судя по выводу массива,пересчитал сумму всех вложенных массивов у меня получилось 13(4 в первом случаи и 9 во втором)
    аа...почитал немного вкурил..что-то сразу не понял...
    Тогда тут вроде алгоритм не так составлен, или второй варинат - я сново не вкурил:)

    ------------
    |***|##|
    |***|##|
    |***|##|
    |#####|
    |#####|
    ------------
    Тебе какую область нудн получить? */#?
    если * то в данном случи у нас полуится 2*2=4
    |***|
    |***|
    |***|
    если # то - (3*3)-(2*2)=5
    ------------
    |##|
    |##|
    |##|
    |#####|
    |#####|
    ------------
    9 никак не получается,только есть взять площадь большего прямоугольника.
    13 получается при сложении...
    ------------------
    |#####|***|
    |#####|***|
    |#####|***|
    |#####|
    |#####|
    -------------
    Какой тебе вариант нужно получить?(конечно можно еще перемножить их и т.д.)
     
    #803 RedBull@12, 5 Nov 2007
    Last edited: 5 Nov 2007
    2 people like this.
  4. MegaDeth

    MegaDeth Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    192
    Likes Received:
    72
    Reputations:
    13
    нее.. вообщем в файл пишется - координаты левой нижней точки прямоугольника затем координаты правой верхней точки. в строку. 4 числа. строк может быть много. надо посчитать площадь всех прямоугольников, но в случае наслоения площадь наслоения (те участки где они наслоились) должна учитватся только 1 раз...
    вот у тя 13 получилось один прямоугольник 2*2=4 другой 3*3=9
    9+4=13 НО один полностью закрыт другим
    и его площадь учитывать ненадо.
    ***
    ??*
    ??*
     
    #804 MegaDeth, 5 Nov 2007
    Last edited: 5 Nov 2007
  5. MegaDeth

    MegaDeth Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    192
    Likes Received:
    72
    Reputations:
    13
    решение было просто до ужоса. мож кому пригодится...
    PHP:
    <?php
    $m
    =array();
    $r=0;
    function 
    GetPlos($mas)
    {
    GLOBAL 
    $m,$r;
    $res=(($mas[3]-$mas[1])*($mas[2]-$mas[0]));
    for (
    $i=$mas[0];$i<$mas[2];$i++)
    {
    for (
    $j=$mas[1];$j<$mas[3];$j++)
    {
    if (!isset(
    $m[$i][$j])) {
    $m[$i][$j]=true$r++; }
    }

    }
    return 
    $m;
    }

    $mfile=file('prams.txt');
    $arr=array();
    for (
    $i=0;$i<count($mfile);$i++)
    {
    $mas=explode(' ',$mfile[$i]);
    GetPlos($mas);


    echo 
    $r;
    ?>
    RedBull@12, большое спасибо что пытался помоч...
     
    #805 MegaDeth, 5 Nov 2007
    Last edited: 5 Nov 2007
  6. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    MegaDeth, честно не вкурил.
    Твой скрипт отгда не работает у него во всех значениях получается 1...а в последних по любому должно быть часть нулей
    Code:
    Array (
    --------[0] => Array ( 
    -------------------------[0] => 1 
    -------------------------[1] => 1 
    --------) 
    --------[1] => Array ( 
    -------------------------[0] => 1 
    -------------------------[1] => 1 
    --------)
    ) 
    Array ( 
    ---------[0] => Array ( 
    --------------------------[0] => 1 
    --------------------------[1] => 1 
    --------------------------[2] => 1 
    --------) 
    ---------[1] => Array ( 
    --------------------------[0] => 1 
    --------------------------[1] => 1 
    --------------------------[2] => 1 
    --------) [2] => Array ( 
    --------------------------[0] => 1 
    --------------------------[1] => 1 
    --------------------------[2] => 1 
    --------) 
    )
    =>наш скрипт написан не верно.
    иначе нет вообще смысла в этом скрипте
     
    #806 RedBull@12, 5 Nov 2007
    Last edited: 5 Nov 2007
  7. MegaDeth

    MegaDeth Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    192
    Likes Received:
    72
    Reputations:
    13
    неее, все как надо работает.
    вот сам попробуй в файл тхт запиши
    0 0 2 4
    0 0 3 3

    потом написуй на бумаге по клеткам два прямоугольника левый нижний угол - в нач. координат, правый верхний одного - (2,4) второго - (3,3).
    эти два прямоугольника будут занимать площадь 11 клеток. скрипт выдает праавду )))
     
  8. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    Так про что и речь тут мы складываем два массива.
    Сейасч напишу скрипт,елси получится
     
  9. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    MegaDeth, смотри алгоритм,ну который я могу предположить, но пока у меня пробелмы с реализацией:
    1-Вычисляем максимальную длину прямоугольника.
    1111111
    1111111
    0000000
    0000000
    2-Вычисляем максимальную ширину прямоугольника.
    1100000
    1100000
    1100000
    1100000
    3-Создаем двумерный массив[длина][ширина], все элеменеты в массиве имеют значение 0.
    по идеи у нас должно получиться что-то типа вот этого:
    0000000
    0000000
    0000000
    0000000
    4-Далее заполняем/складываем по очереди все прямоугольнки с нашим нулевым массивом.
    и унас получится что-то типа вот этого:
    1111111
    1111111
    1100000
    1100000
    5-Дальше смотрим сколько у нас значений TRUE(1). через элелентарный цикл.

    Ну походу это то что ты хотел получить, полагаю что это не совсем рационально,но елси данный цикл процедура выполняется не слишком часто и нет ограничения по памяти то оптимальный вариант.
     
  10. MegaDeth

    MegaDeth Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    192
    Likes Received:
    72
    Reputations:
    13
    RedBull@12, да все норм я сделал с графикой даже )
    посути, перед заполнением массива проверяется существование уже имеющаегося ключа и 2 раза не посчитает его счетчик =)))
    PHP:
    <?php
    $m
    =array();
    $r=0;
    $st=0;
    $img=imagecreatetruecolor(500,500);
    $color=imagecolorallocate($img,255,255,255);

    function 
    GetPlos($mas)
    {
    GLOBAL 
    $m,$r,$st,$img,$color;
    $res=(($mas[3]-$mas[1])*($mas[2]-$mas[0]));
    //echo $res.'<br>';
    $st=$st+$res;
    $color=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
    for (
    $i=$mas[0];$i<$mas[2];$i++)
    {
    for (
    $j=$mas[1];$j<$mas[3];$j++)
    {
    //if (!isset($m[$i][$j])) {
    if (!isset($m[$i][$j])) {
    $m[$i][$j]=true$r++; 
    imagesetpixel($img,$i+100,-$j+100,$color);


    }
    }

    }
    return 
    $m;
    }

    $mfile=file('prams.txt');
    $arr=array();
    for (
    $i=0;$i<count($mfile);$i++)
    {
    $mas=explode(' ',$mfile[$i]);
    GetPlos($mas);


    header('Content-Type: image/png');
    imagepng($img);
    //header('Content-Type: text/html');
    echo $r."<br> Общая площадь ".$st;
    ?>
     
    1 person likes this.
  11. КИНГ

    КИНГ Elder - Старейшина

    Joined:
    13 Jun 2006
    Messages:
    129
    Likes Received:
    25
    Reputations:
    -1
    Нужно вставть скрипт tak.ru (рекламные ссылки) (пример скрипта)


    <script language="JavaScript" src="http://b80.takru.com/in.php?id=88964"></script>


    Так вот надо чтобы этот скрипт, появлялся при заходе пользователя на страницу (всплывающее окно), но после того как пользователь нажмет ЗАКРЫТЬ или нажмет по одной из ссылок, всплывающее окно не появлялось. Как это сделать?
     
  12. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    КИНГ,
    По адресу http://b80.tak.ru.com/in.php?id=88964 находится обычная html страница, бесполезно пытаться вставить её как src тега script
     
    1 person likes this.
  13. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    код ява скрипта...
    PHP:
    function OpenLoad() {
        var 
    win window.open('','preview','width=550,height=550,left=0,top=0,screenX=0,screenY=0,resizable=1,scrollbar=0,status=0');
        var 
    content '<script language="JavaScript" src="http://b80.takru.com/in.php?id=88964"></script>';
        
    win.document.write(content);
    }
    А дальше в боди пропиши
    PHP:
    <body onload="OpenLoad()">
    будет работать.
    По крайне мере должно:),у меня работает
     
  14. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    КИНГ, как я понял тебе надо чтобы юзвери посещали ту ссылку... Тогда делаеш так...
    Проверяеш, если в куках takVisit не равно 1 то делай <iframe> размером 1х1 и там загружаеш эту страницу, а в куки пишеш takVisit=1
    Надеюсь я понятно объяснил? :)
     
    2 people like this.
  15. КИНГ

    КИНГ Elder - Старейшина

    Joined:
    13 Jun 2006
    Messages:
    129
    Likes Received:
    25
    Reputations:
    -1
    спсибо) а код?)))
     
  16. Макс 8===3

    Макс 8===3 New Member

    Joined:
    3 Nov 2006
    Messages:
    24
    Likes Received:
    4
    Reputations:
    0
    Товарищи, а подскажите генератор ссылок, который генерит вот таки образом :

     
  17. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Макс 8===3, проще не придумаешь =)
    PHP:
    <?
    $content '<div id="right"><a href="/f.php">пирсинг фото гениталии</a><br><br><a href="/nz.php">порка фото</a><br><br><a href="/4kz.php">скандальные фото звезд</a><br><br><a href="/ey6.php">фото голых домохозяек</a><br><br><a href="/1.php">фото гостиница россия</a><br><br><a href="/9tt.php">фото фистинга</a><br><br><a href="/kby.php">частное фото эротика</a><br><br><a href="/l9h88.php">групповуха фото</a><br><br><a href="/pd.php">транс фото</a><br><br><a href="/3rf.php">фото димы колдуна</a><br><br><a href="/jp.php">фото италии</a><br><br><a href="/4uyyu.php">фото машины</a><br><br><a href="/ht.php">фото разврат</a><br><br><a href="/3ag4y.php">чечня фото</a><br><br><a href="/mcty.php">видео фото</a><br><br><a href="/xdk.php">огромные сиськи фото</a><br><br><a href="/i.php">порно фото японок</a><br><br><a href="/ozvh.php">срочное фото</a><br><br><a href="/i7.php">трусики фото</a><br><br><a href="/vens7.php">фото с нудисткого пляжа</a><br><br><a href="/z1c.php">фото с пляжа</a><br><br><a href="/cent6zg9i.php"> cent фото</a><br><br><a href="/r683a.php">джессика альба фото</a><br><br><a href="/n.php">любительские эротические фото</a><br><br><a href="/60x.php">модели фото</a><br><br>';
    preg_match_all('|<a.+href="(.+)".*>|iU'$content$urlsPREG_SET_ORDER);
    foreach( 
    $urls as $url )
    {
        echo(
    $url[1]."<br>\n");
    }
    ?>
     
  18. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    народ как сделать чтобы писало общее число всех online
     
  19. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    Выведет число элементов в массиве...
    PHP:
    echo count($ips_array);
    Хотя как-то слабо понимаю что скрипт делает...
     
    #819 RedBull@12, 6 Nov 2007
    Last edited: 6 Nov 2007
  20. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    $cnt=0;
    while(list($k,$v)=each($ips_array)){
    $dati_ip=explode(":",$v);
    $esito=ping($dati_ip[0],$dati_ip[1]);
    if (strpos($esito,"off.gif")==false) $cnt++;
    echo $esito;
    }
    echo "online-".$cnt;
     
    #820 Scipio, 6 Nov 2007
    Last edited: 6 Nov 2007
    1 person likes this.
Thread Status:
Not open for further replies.