HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 05.11.2007, 02:09
MegaDeth
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме:
1038169

Репутация: 184
По умолчанию

Цитата:
Сообщение от RedBull@12  
у етбя такие массивы
massiv1[x] и massiv2[y]
где X = 0...X, ну или что-то типа того
а Y = 0...Y, ну или похожее
так?
нет,

массивы генерируются так:
PHP код:
function GetPlos($mas)
{
$r=0;
$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++)
{

$m[$i][$j]=true;
}

}

return 
$m;
}


$mfile=file('prams.txt');
$arr=array();
for (
$i=0;$i<count($mfile);$i++)
{
$mas=explode(' ',$mfile[$i]);
//$arr=$arr+GetPlos($mas);
//print_r(GetPlos($mas)); echo '<br>';
 
GetPlos($mas);// вот эта функция возвращает массивы.

в файле
PHP код:
0 0 2 2
0 0 3 3 
имеется 2 прямоугольника. один полностью закрыт другим (начало в 0,0, заканчивается один в 2,2 другой в 3,3 (коодинаты ссотв..))

надо сделать так чтобы не перечислялись два раза те которые имеют общие точки..
 
Ответить с цитированием

  #2  
Старый 05.11.2007, 10:57
MegaDeth
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме:
1038169

Репутация: 184
По умолчанию

нее.. вообщем в файл пишется - координаты левой нижней точки прямоугольника затем координаты правой верхней точки. в строку. 4 числа. строк может быть много. надо посчитать площадь всех прямоугольников, но в случае наслоения площадь наслоения (те участки где они наслоились) должна учитватся только 1 раз...
вот у тя 13 получилось один прямоугольник 2*2=4 другой 3*3=9
9+4=13 НО один полностью закрыт другим
и его площадь учитывать ненадо.
***
??*
??*

Последний раз редактировалось MegaDeth; 05.11.2007 в 11:11..
 
Ответить с цитированием

  #3  
Старый 05.11.2007, 13:44
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме:
482261

Репутация: 58
По умолчанию

MegaDeth, честно не вкурил.
Твой скрипт отгда не работает у него во всех значениях получается 1...а в последних по любому должно быть часть нулей
Код:
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 
--------) 
)
=>наш скрипт написан не верно.
иначе нет вообще смысла в этом скрипте

Последний раз редактировалось RedBull@12; 05.11.2007 в 14:03..
 
Ответить с цитированием

  #4  
Старый 05.11.2007, 12:59
MegaDeth
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме:
1038169

Репутация: 184
По умолчанию

решение было просто до ужоса. мож кому пригодится...
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, большое спасибо что пытался помоч...

Последний раз редактировалось MegaDeth; 05.11.2007 в 13:04..
 
Ответить с цитированием

  #5  
Старый 05.11.2007, 14:31
MegaDeth
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме:
1038169

Репутация: 184
По умолчанию

неее, все как надо работает.
вот сам попробуй в файл тхт запиши
0 0 2 4
0 0 3 3

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

  #6  
Старый 05.11.2007, 16:31
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме:
482261

Репутация: 58
По умолчанию

Цитата:
Сообщение от MegaDeth  
неее, все как надо работает.
вот сам попробуй в файл тхт запиши
0 0 2 4
0 0 3 3

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

  #7  
Старый 05.11.2007, 17:13
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме:
482261

Репутация: 58
По умолчанию

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). через элелентарный цикл.

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

  #8  
Старый 05.11.2007, 17:54
MegaDeth
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме:
1038169

Репутация: 184
По умолчанию

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;
?>
 
Ответить с цитированием

  #9  
Старый 05.11.2007, 18:04
КИНГ
Участник форума
Регистрация: 13.06.2006
Сообщений: 215
Провел на форуме:
2364210

Репутация: 49
По умолчанию

Нужно вставть скрипт tak.ru (рекламные ссылки) (пример скрипта)


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


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

  #10  
Старый 05.11.2007, 22:09
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
Провел на форуме:
482261

Репутация: 58
По умолчанию

Цитата:
Сообщение от КИНГ  
Нужно вставть скрипт tak.ru (рекламные ссылки) (пример скрипта)


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


Так вот надо чтобы этот скрипт, появлялся при заходе пользователя на страницу (всплывающее окно), но после того как пользователь нажмет ЗАКРЫТЬ или нажмет по одной из ссылок, всплывающее окно не появлялось. Как это сделать?
код ява скрипта...
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()"
будет работать.
По крайне мере должно,у меня работает
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ