Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сильная задача на проверку логики 
:(
    Опции темы
Master
Дата 9.6.2003, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



и где должна определяться переменная $total и чему должна равняться?


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
MuToGeN
Дата 9.6.2003, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Блин, действительно, примитивнейшая ошибка.
Цитата

function subArray($arr)
{
  $total=1;
  for($i=0;$i<sizeof($arr);$i++)
  {
    $total*=sizeof($arr[i]);
    $position[i]=0;
  }
    итд...
Должна она равняться максимальному первому индексу возвращаемого массива...


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Master
Дата 10.6.2003, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



Код
<?php
function subArray($arr)
{
$total = 1;
for($i=0;$i<sizeof($arr);$i++)
{
  $total*=sizeof($arr[$i]);
  $position[$i]=0;
}
for($i=0;$i<$total;$i++)
{
  for($j=0;$j<sizeof($arr);$j++)
    $r[$i][$j]=$arr[$j][$position[$j]];
  $positionSwitched=false;
  $p=sizeof($arr)-1;
  while ((!$positionSwitched) && ($i!=$total) ) {
   $position[$p]++;
   if ($position[$p]>=sizeof($arr[$p])) {
     $position[$p]=0;
     $p--;
   } else {
     $positionSwitched = true;
   }
  }
 }
return $r;
}

$arr = Array (
'0' => Array ('1','2','3'),
'1' => Array ('1','2','3'),
'2' => Array ('1','2','3'),
);

print_r (subArray($arr));

?>


Вот результат:

Warning: Undefined offset: -1 in d:\dmitriy\sites\test\www\arrcomplete.php on line 17

Warning: Undefined offset: -1 in d:\dmitriy\sites\test\www\arrcomplete.php on line 18

Warning: Undefined offset: -2 in d:\dmitriy\sites\test\www\arrcomplete.php on line 17

Warning: Undefined offset: -2 in d:\dmitriy\sites\test\www\arrcomplete.php on line 18

Warning: Undefined offset: -3 in d:\dmitriy\sites\test\www\arrcomplete.php on line 17

и т.д.

Прога глючит sad.gif
Хватит, сначала проверь её хотябы на хостинге если он есть!


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
MuToGeN
Дата 10.6.2003, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Хостинга нет sad.gif Но обкатать ее постараюсь в ближайшее время.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
MuToGeN
Дата 20.6.2003, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Код
<?php
function subArray($arr)
{
 $total=1;
 for($i=0;$i<sizeof($arr);$i++)
 {
   $total*=sizeof($arr[$i]);
   $position[$i]=0;
 }
 for($i=0;$i<$total;$i++)
 {
   for($j=0;$j<sizeof($arr);$j++)
     $r[$i][$j]=$arr[$j][$position[$j]];
   $positionSwitched=false;
   $p=sizeof($arr)-1;
   while(!$positionSwitched)
   {
     $position[$p]++;
     if($position[$p]>=sizeof($arr[$p]))
     {
       $position[$p]=0;
       $p--;
       if($p==-1)
         $positionSwitched=true;
     }
     else
       $positionSwitched=true;
   }
 }
 return $r;
}
$arr=Array (
Array('1','2','3','4','5'),
Array('a','b','c','d'),
Array('V','W','X','Y','Z'));
$arr2=subArray($arr);
echo "Исходный массив:<br/>\n".
    "<table>\n";
for($i=0;$i<sizeof($arr);$i++)
{
 echo "<tr>\n";
 for($j=0;$j<sizeof($arr[$i]);$j++)
   echo "<td>".$arr[$i][$j]."</td>\n";
 echo "</tr>\n";
}
echo "</table>\n".
    "Результат:<br/>\n".
    "<table>\n";
for($i=0;$i<sizeof($arr2);$i++)
{
 echo "<tr>\n";
 for($j=0;$j<sizeof($arr2[$i]);$j++)
   echo "<td>".$arr2[$i][$j]."</td>\n";
 echo "</tr>\n";
}
echo "</table>\n";
?>
Проверенно на людях smile.gif Работает на 100%


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
MuToGeN
Дата 20.6.2003, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



Цитата
Вот результат:
Warning: Undefined offset: -1 in d:\dmitriy\sites\test\www\arrcomplete.php on line 17
Warning: Undefined offset: -1 in d:\dmitriy\sites\test\www\arrcomplete.php on line 18
Warning: Undefined offset: -2 in d:\dmitriy\sites\test\www\arrcomplete.php on line 17
Warning: Undefined offset: -2 in d:\dmitriy\sites\test\www\arrcomplete.php on line 18
Это все потому, что $i изменяется от 0 до $total-1, а в условии прекращения while было задано ... && ($i != $total)..... Оно так и так никогда не равно... Тоже моя ошибка. Но последний исходник точно работает.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Master
Дата 21.6.2003, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1530
Регистрация: 13.5.2003
Где: Mother Russia

Репутация: 8
Всего: 10



И прада работает. Respect. Код поизучаю. Спасибо.


--------------------
Вавилон, Вавилон
Что ты построил, что разрушил?
Вавилон, Вавилон
Плавятся души дьявольским огнем.
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.