Показать сообщение отдельно
  #17 (permalink)  
Старый 01.03.2013, 19:38
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от rgl
Тем, что строчка "Уравнения прямой: " не обрабатывается понапрасну регэкспом.
Теперь понял.

Сообщение от rgl
Если "вылизывать" код, то в полученном варианте новичку сложнее будет найти ответ на свой вопрос (а не новичок такого вопроса бы не задал).
Просто я делал очень похожее для своих нужд. Поэтому спросил.

Нужна была функция для упрощения (преобразования к привычному виду) уравнений любого порядка.
Получилось так:

<script type="text/javascript">
function simplifyEq(an,xn)
{  var axn = [], sign;

   xn[an.length-1] = '';

  for (i=0; i<an.length; i++)
        { if (an[i]<0) {sign = ''}
          else         {sign = '+'}
          
          if (an[i]==-1)     {axn[i]='-'+xn[i]; axn[an.length-1]='-1'}
          else if (an[i]==0) {axn[i]=''}
          else if (an[i]==1) {axn[i]='+'+xn[i]; axn[an.length-1]='+1'}
          else               {axn[i]=sign+an[i]+xn[i]}  
        }

  var newEq = axn.join('');

  if (/\+/.test(newEq.charAt(0)))         //Если перед самым 1-м коэф. будет '+', то удаляем этот '+'
     { newEq = newEq.replace(/\+/,'') }

  if (/-/.test(newEq.charAt(0)))              
     { newEq = newEq.replace(/-/,'').replace(/(-|\+)/g,'$1+').replace(/-\+/g,'+').replace(/\+\+/g,'-') }
                                          //Если перед самым 1-м коэф. будет '-', то удаляем этот '-'
                                          //и изменяем остальные знаки на противоположные

  return newEq+'=0';
}
</script>
<button onclick="alert( '-2x^2+1y^2-1xy+0x+5y-4=0\n<=>\n'
                        + simplifyEq([-2,1,-1,0,5,-4],['x^2','y^2','xy','x','y'])
                       )">
Преобразовать <b>-2x^2+1y^2-1xy+0x+5y-4=0</b> к привычному виду</button>

Последний раз редактировалось Demath, 01.03.2013 в 19:45.
Ответить с цитированием