Вурдалак
Продвинутый новичок
— и наоборот...Автор оригинала: craz
это кстати ошибка всех паскальщиков
— и наоборот...Автор оригинала: craz
это кстати ошибка всех паскальщиков
)) обратно пока что не пересаживался но думаю да,будет проблематично, хотя код на паскале все еще хорошо читаю.Автор оригинала: Вурдалак
— и наоборот...
<?php
Function Polsha($formula)
{
$formula = str_replace(" ","", $formula);
$dl=strlen($formula);
$x='';
$all='';
$predprior=0;
$mass='';
for ($i = 0; $i <= $dl; $i++)
{
$simbol=substr($Formula,$i,2);
if ($simbol != '')
if ('["a", "b", "c", "d", "e", "f", "g", "h"]'==$simbol)
$all=$all+$simbol;
if ('["*", "/"]'==$simbol)
{$prior=2;
if ($predprior <= $prior)
{
$mass=$mass+$simbol;
$predprior = $prior; } else
{
$a=strlen($mass);
for ($j=strlen($mass); $j >= 0; $j--)
{
$simbol1=substr($mass,$j,2);
$all=$all+$simbol1;
}
}
$mass=$mass+$simbol;
$predprior=$prior;
}
if ('["+", "-"]'==$simbol)
{$prior=1;
if ($predprior <= $prior)
{
$mass=$mass+$simbol;
$predprior = $prior;
} else
{
$a=strlen($mass);
for ($j=strlen($mass); $j > 0; $j--)
{
$simbol1=substr($mass,$j,2);
$all=$all+$simbol1;
}
}
$mass=$mass+$simbol;
$predprior=$prior;
}
if ('('==$simbol)
{$mass = $mass+$simbol;}
if (')'==$simbol)
for ($j=strlen($mass); $j > 0; $j--)
{
$simbol1=substr($mass,$j,2);
$all=$all+$simbol1;
}
}
return($all);
}
$formula = 'a*b+c-d/e';
print(Polsha($formula));
?>
<?php
Function Polsha($formula)
{
print('Ok <br>');
print("$formula <br>");
$formula = str_replace(" ","", $formula);
$dl=strlen($formula);
$x='';
$all='';
$predprior=0;
$mass='';
for ($i = 0; $i <= $dl; $i++)
{
$simbol=substr($formula,$i,2);
// Если вот тут написать print($simbol), то выводится то, что нужно, то есть посимвольно он считывает и выдает a * и b и т.д.
// if ('' != $simbol)
if ( strcmp(/*'("a", "b", "c", "d", "e", "f", "g", "h")'*/"a", $simbol)==0 )
{
// Если тут, то уже не выводится, и непонятно ... Если он считал символ "a" почему не может сравнить ...
print($simbol);
$all=$all.$simbol;
} else
if ('("*", "/")'==$simbol)
{
print($simbol);
{$prior=2;
if ($predprior <= $prior)
{
$mass=$mass.$simbol;
$predprior = $prior; } else
{
$a=strlen($mass);
for ($j=strlen($mass); $j >= 0; $j--)
{
$simbol1=substr($mass,$j,2);
$all=$all.$simbol1;
}
}
$mass=$mass.$simbol;
$predprior=$prior;
}
} else
if ('("+", "-")'==$simbol)
{
$prior=1;
if ($predprior <= $prior)
{
$mass=$mass.$simbol;
print($mass);
$predprior = $prior;
} else
{
$a=strlen($mass);
for ($j=strlen($mass); $j > 0; $j--)
{
$simbol1=substr($mass,$j,2);
$all=$all.$simbol1;
}
}
$mass=$mass.$simbol;
$predprior=$prior;
}
if ('('==$simbol)
{$mass = $mass.$simbol;}
if (')'==$simbol)
for ($j=strlen($mass); $j > 0; $j--)
{
$simbol1=substr($mass,$j,2);
$all=$all.$simbol1;
}
}
return($all);
print($all);
}
$formula = 'a*b+c-d/e';
print(Polsha($formula));
?>