Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

03.03.2009, 19:30
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
проблема с алгоритмом
функция принимает массив с любым кол-вом элементов и кол-во столбцов.
Возвращает html-таблицу с отсортированными элементами, размещёнными по вертикали.
Всё отлично пока кол-во столбцов меньше 5.
Начиная от пяти, при любом раскладе выводится 6 столбцов.
PHP код:
<?php
function showTable($elements, $cols = 3){
sort($elements);
$size = sizeof($elements);
$elementsInCol = floor($size/$cols);
$html = "<table border='1'>\n<tr>\n";
$cells = $elementsInCol * $cols;
for($row = $pos = $i = 0; $i < $cells; $i++, $pos += $elementsInCol)
{
if($pos >= $size)
{
$pos = ++$row;
$html .= "</tr>\n<tr>\n\n";
}
$html .= "\t<td>".$elements[$pos]."</td>\n";
}
$html .= "</tr>\n</table>";
return $html;
}
$cols = 3;
$elements = array('C', 'A', 'B', 'G', 'H', 'F', 'D', 'E', 'I', 'J', 'Z', 'Y');
echo showTable($elements, $cols);
вообще даже на бумаге хрень какая-то.
допустим есть массив:
A B C D E F G H I J Y Z - 12 элементов
делим на 5 столбцов:
если по 2 элемента в столбце - получается
A C E G I Y
B D F H J Z -- 6 столбцов. не влезает.
если по 3 элемента в столбце:
A D G J
B E H Y
C F I Z -- 4 столбца. 5-ый просто пустой!
Можно предположить что это правильно, хоть и нерационально.
Ща буду думать как это сделать
Последний раз редактировалось Дикс; 03.03.2009 в 19:37..
|
|
|

03.03.2009, 19:40
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
блин, решил.
забыл заменить
if($pos >= $size)
на
if($pos >= $cells)
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|