Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик
Статус: Академик
Рейтинг: 10271
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Академик
Рейтинг: 3877
∙ повысить рейтинг »
vladisslav
Статус: Практикант
Рейтинг: 1353
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / PHP

Номер выпуска:1248
Дата выхода:28.03.2012, 18:00
Администратор рассылки:Устинов С.Е. (Профессионал)
Подписчиков / экспертов:141 / 77
Вопросов / ответов:1 / 1

Консультация # 185632: Здравствуйте! У меня возникли сложности с таким вопросом: Написал программу, генерирующю последовательность случайных цифр, но она не выдает результата при нажатии на 2-ю кнопку (пустой экран). Возможно это из за фигурных скобок. Результат она должна будет записать переменную(которая доступна будет с любой странички сайта). Программа должна...


Консультация # 185632:

Здравствуйте! У меня возникли сложности с таким вопросом:
Написал программу, генерирующю последовательность случайных цифр, но она не выдает результата при нажатии на 2-ю кнопку (пустой экран). Возможно это из за фигурных скобок. Результат она должна будет записать переменную(которая доступна будет с любой странички сайта).
Программа должна работать с большими числами (напр. 1000), которые будут браться из БД.
файл php, который не работает
рабочий исходник delphi

если поставить еще одну фигурную скобку после первой кнопки, то ругается на переменные, используемые внутри функций.
Функция, которая выдает результат

Код :
function  SortVuvod(){}


Я пытался переделать программу из delphi на php, возможно ч то то напортачил. Первая кнопка работает, а вторая не выводит результат. Помогите пожалуйста исправить код. smile

Дата отправки: 20.03.2012, 17:43
Вопрос задал: novij2011 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Коцюрбенко Алексей aka Жерар (Академик):

Здравствуйте, novij2011!

В первом приближении Ваша программа на PHP может выглядеть примерно так:

Код (PHP):
<?php
session_start();

global $RazmerPop, $RazmerPopTek, $nKros, $nMut, $PopRab, $MasPopRab, $Vyvod, $SaveP;

$RazmerPop = intval($_POST['RazmerPop']);
$nKros = intval($_POST['nKros']);
$nMut = intval($_POST['nMut']);

extract($_SESSION, EXTR_OVERWRITE);

echo "
<form style="'MARGIN:" 0px' method=post action='popul.php'>
 <table class='tableTable' border=0 cellSpacing=0 cellPadding=0>
 <tbody class='tableBody'>
  <tr class='tableRow tableRowEven'>
   <td><div class='b1'>Размер популяции</div> </td>
   <td><div class='b1'><INPUT NAME='RazmerPop' VALUE='$RazmerPop' size=4></div></td>
  </tr>
  <tr class='tableRow tableRowEven'>
   <td><div class='b1'>Мутация (раз)</div> </td>
   <td><div class='b1'><INPUT NAME='nMut' VALUE='$nMut' size=4></div></td>
  </tr>
  <tr class='tableRow tableRowEven'>
   <td><div class='b1'>Кроссовер (раз)</div> </td>
   <td><div class='b1'><INPUT NAME='nKros' VALUE='$nKros' size=4></div></td>
  </tr>
  <tr class='tableRow tableRowEven'>
   <td class='button1'><div class='b1'><INPUT class='button blue' TYPE=submit NAME='submitButtonCreate' VALUE='Cоздать'></div></td>
   <td class='button1'><div class='b1'><INPUT class='button blue' TYPE=submit NAME='submitButtonSave' VALUE='Генерировать'></div></td>
  </tr>
 </tbody>
 </table>
</form>";

 function SavePop()
 {
 global $RazmerPop, $MasPopRab, $SaveP;
  for ($i=0; $i<$RazmerPop; $i++)
  $SaveP[$i] = $MasPopRab[$i];
 }

 function Proverka($poz)
 {
 global $MasPopRab;
 $p = true;
  for ($t=0; $t<8; $t++)
  $p = $p AND ($MasPopRab[$poz]['KolRabMesto'][$t]!=0);
 return $p;
 }

// Операция кроссовер
 function Krosover() 
 {
 global $RazmerPop, $RazmerPopTek, $MasPopRab;
 $RazmerPopTek = $RazmerPop;
 $NomPop = range(0, $RazmerPop-1);
 shuffle($NomPop);
  for ($j=0; $j<$nKos; $j++)
  {
   while ($NomPop) // сдесь квадратные скобки
   {
   $k1 = array_shift($NomPop);
   $k2 = array_shift($NomPop);
    do
    {
    $d = rand(1, 64);
// Новый вид 1
    $RazmerPopTek++;
    $MasPopRab[$RazmerPopTek]['Rab'] = array_merge(array_slice($MasPopRab[$k1]['Rab'],0,$d-1), array_slice($MasPopRab[$k2]['Rab'],$d));
// Новый вид 2
    $RazmerPopTek++;
    $MasPopRab[$RazmerPopTek]['Rab'] = array_merge(array_slice($MasPopRab[$k2]['Rab'],0,$d-1), array_slice($MasPopRab[$k1]['Rab'],$d));
     if (Proverka($RazmerPopTek-1) AND Proverka($RazmerPopTek)) break;
     else
     {
     $RazmerPopTek -= 2;
     array_push($NomPop, $k1, $k2);
     }
    } while (true);
   }
  }
 }

// Операция мутации
 function MutaGen()
 {
 global $RazmerPopTek, $nMut, $MasPopRab;
  for ($j=0; $j<$nMut; $j++)
  {
  $nom = rand(0, $RazmerPopTek-1);
   do
   {
   $RazmerPopTek++;
   $i = Rand(0, 64);
    do $k = rand(1, 9);
    while ($k<>$MasPopRab[$nom]['Rab'][$i] AND $MasPopRab[$nom]['KolRabMesto'][$k]>1);
   $MasPopRab[$RazmerPopTek] = $MasPopRab[$nom];
   $MasPopRab[$RazmerPopTek]['Rab'][$i] = $k;
    if (Proverka($RazmerPopTek)) break;
    else $RazmerPopTek -= 2;
   } while (true);
  }
 }

// Отборка особей
 function SortPop()
 {
 global $RazmerPopTek, $MasPopRab;
  for ($i=0; $i<$RazmerPopTek-1; $i++)
   for ($k=0; $k<$RazmerPopTek-1; $k++)
    if ($MasPopRab[$k]['TimeCritical']>$MasPopRab[$k+1]['TimeCritical'])
    {
    $A = $MasPopRab[$k];
    $MasPopRab[$k] = $MasPopRab[$k+1];
    $MasPopRab[$k+1] = $A;
    }
 }

 function SortVyvod()
 {
 global $v, $Vyvod;
  for ($i=0; $i<$v-1; $i++)
   for ($k=0; $k<$v-1; $k++)
    if ($Vyvod[$k]['TimeCritical']>$Vyvod[$k+1]['TimeCritical'])
    {
    $A = $Vyvod[$k];
    $Vyvod[$k]= $Vyvod[$k+1];
    $Vyvod[$k+1]= $A;
    }
  for ($i=0; $i<$v-1; $i++)
  {
   for ($t=0; $t<8; $t++)
   echo $Vyvod[$i]['KolRabMesto'][$t];
  echo "<br />";
  }
 }

 function Ostanov()
 {
 global $RazmerPop, $MasPopRab;
  for ($i=0; $i<RazmerPop; $i++)
   if ($SaveP[$i]['TimeCritical']!=$MasPopRab[$i]['TimeCritical']) return false;
 return true;
 }

 if (!empty($_POST['submitButtonCreate']) AND isset($_POST['submitButtonCreate']))
 { 
 $PopRab = array("Rab"=>range(1,65), "KolRabMesto"=>range(1,8), "TimeCritical"=>0);
 $MasPopRab = array($PopRab);
 $SaveP = array($PopRab);
 $Vyvod = array($PopRab);
  for ($i=0; $i<$RazmerPop; $i++)
  {
   for ($j=0; $j<65; $j++)
   echo $MasPopRab[$i]['Rab'][$j] = rand(1,9);
  echo "<br />";
  }
 }
// Генетический алгоритм
 elseif (!empty($_POST['submitButtonSave']) AND isset($_POST['submitButtonSave']))
 { 
  for ($v=0; Ostanov(); $v++)
  {
  SavePop();
  Krosover();
  MutaGen();
  SortPop();
  $Vyvod[$v] = $MasPopRab[1];
  }
 SortVyvod();
 }

$_SESSION = compact('RazmerPopTek', 'MasPopRab', 'SaveP', 'Vyvod');
?>

Если что-то неясно, спрашивайте в минифоруме. Удачи.

Консультировал: Коцюрбенко Алексей aka Жерар (Академик)
Дата отправки: 28.03.2012, 15:54
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное