Помощь в разборе скрипта

Тема в разделе "Другие языки", создана пользователем Sachek, 25 янв 2011.

Модераторы: Цукер
  1. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    387
    Симпатии:
    102
    Помогите переделать калькулятор на яве.
    Калькулятор считает проценты по кредиту, а мне надо переделать в подсчет прибыли от инвестирования. По сути там только математику изменить необходимо, буду благодарен, кто поможет.
    Сам скрипт:
    PHP:
    <script>
    <!--
    var 
    50000.00;
    var 
    11;
    var 
    3;
    var 
    0;
    var 
    htmlCode "";
    var 
    tStr "";
    function 
    Init()
    {
      
    document.forms.mainform["amount"].value a.toString();
      
    document.forms.mainform["percent"].value p.toString();
      
    onChangeParameter();
    }
    function 
    roundPrcs(valueprecision)
    {
      var 
    val Math.round(value*Math.pow(10,precision));
      
    val=val<"" val.toString();
      
    val val.substring(0,val.length-precision)+"."+val.substring(val.length-precisionval.length);
      return 
    val;
    }
    function 
    onChangeParameter()
    {
      switch (
    document.forms.mainform["calcscheme"].value)
      {
        case 
    "decr" :
        
    document.getElementById("pay_header").innerText="Платеж в первый месяц"
          break;
        case 
    "equ" :
            
    document.getElementById("pay_header").innerText="Ежемесячный платеж";
          break;
        default :
            
    document.getElementById("pay_header").innerText="";
      }
      
    calcPay();
    }
    function 
    calcPay()
    {
      
    Number(document.forms.mainform["amount"].value);
      
    Number(document.forms.mainform["percent"].value);
      
    Number(document.forms.mainform["term"].value);
      
    Number(document.forms.mainform["pay"].value);
      switch (
    document.forms.mainform["calcscheme"].value)
      {
        case 
    "decr" :
          
    a/t+a*p/1200;
          break;
        case 
    "equ" :
          
    a*p/1200/(1-Math.pow(1+p/1200,-t));
          break;
        default :
          
    d=-1;
      }
      
    document.forms.mainform["pay"].value roundPrcs(d2);
    }
    function 
    genTable()
    {
      
    Number(document.forms.mainform["amount"].value);
      
    Number(document.forms.mainform["percent"].value);
      
    Number(document.forms.mainform["term"].value);
      var 
    scheme="";
      var 
    dbdpd;
      var 
    sdb=0sdp=0sd=0;
    //  document.all("pay_table").innerText="A long time ago";
      
    for(i=0;i<document.forms.mainform["calcscheme"].options.length;i++)
      {
        if(
    document.forms.mainform["calcscheme"].options.item(i).selected)
        {
          
    scheme=document.forms.mainform["calcscheme"].options.item(i).innerText;
          break;
        }
      }
      
    tStr ="";
      
    tStr tStr "<p class='title2'>Условия кредитования:</p>";
      
    tStr tStr "Схема выплат: "+scheme+".<br />";
      
    tStr tStr "Сумма кредита: "+roundPrcs(a,2)+ "<br />";
      
    tStr tStr "Срок кредитования: "+t+" мес. Процентная ставка: "+roundPrcs(p,2)+"%.<br /><br />";
      
    tStr tStr "<p class='title2'>График возврата кредита и уплаты процентов за пользование кредитом:</p>";
      
    tStr tStr "<table border=1 width=90% cellspacing=0 cellpadding=5 bgcolor=#сссссс style='border:1px solid white'>";
      
    tStr tStr "<tr bgcolor='#555555' style='color:white'><td>Период (№ года)</td><td>Возвращаемая часть кредита</td>";
      
    tStr tStr "<td>Проценты по кредиту</td><td>Общая сумма кредита и процентов</td><td>Задолженность</td></tr>";
      
    db=Number(roundPrcs(a/t,2));
      
    d=Number(roundPrcs(a*p/1200/(1-Math.pow(1+p/1200,-t)),2));
      var 
    tyear 0;
      for(
    i=1;i<t;i++)
      {
        switch (
    document.forms.mainform["calcscheme"].value)
        {
          case 
    "decr" :
            
    dp=Number(roundPrcs(a*p/1200,2));
            
    d=Number(roundPrcs(db+dp,2));
            
    a=a-db;
            break;
          case 
    "equ" :
            
    dp=Number(roundPrcs(a*p/1200,2));
            
    db=Number(roundPrcs(d-dp,2));
            
    a=a-db;
            break;
          default :
            
    dp="";
        }
        if ((
    i-1)%12 == 0tyear++;
        
    tStr tStr "<tr  bgcolor='#FFFFFF'><td><nobr>"+i+" мес. (" tyear +  " год )</nobr></td><td align=center>"+roundPrcs(db,2)+"</td><td align=center>"+roundPrcs(dp,2)+"</td><td align=center>"+roundPrcs(d,2)+"</td><td align=center>"+roundPrcs(a,2)+"</td></tr>";
        
    sdp+=dp;
        
    sdb+=db;
        
    sd+=d;
      }
    //for
      
    db=a;
      
    dp=Number(roundPrcs(db*p/1200,2));
      
    d=Number(roundPrcs(db+dp,2));
      
    sdp+=dp;
      
    sdb+=db;
      
    sd+=d;
      
    tStr tStr "<tr bgcolor='#FFFFFF' ><td>"+i+" мес. (" tyear " год) </td><td align=center>"+roundPrcs(db,2)+"</td><td align=center>"+roundPrcs(dp,2)+"</td><td align=center>"+roundPrcs(d,2)+"</td><td align=center>"+roundPrcs(a,2)+"</td></tr>";
      
    tStr tStr "<tr bgcolor='#AAAAAA' style='color:white'><td><b>Всего:</b></td><td align=center><b>"+roundPrcs(sdb,2)+"</b></td><td align=center><b>"+roundPrcs(sdp,2)+"</b></td><td align=center><b>"+roundPrcs(sd,2)+"</b></td align=center><td bgcolor='AAAAAA'></td></tr>";
      
    tStr tStr "</table><br />";
    document.getElementById("table_data").innerHTML "";
    document.getElementById("table_data").innerHTML tStr;
    }
    -->
    </script>
    <script>
      htmlCode = '';
      htmlCode = htmlCode + '<form id="mainform">';
      htmlCode = htmlCode + '<table border=0 cellspacing=0 celpadding=0><tr><td width=200>Схема выплат</td><td>';
      htmlCode = htmlCode + '  <select class="input" name="calcscheme" onclick="onChangeParameter()" onkeyup="onChangeParameter()">';
      htmlCode = htmlCode + '  <option id="decr" value="decr">Убывающими платежами</option>';
      htmlCode = htmlCode + '  <option selected id="edu" value="equ">Аннуитентными платежами</option>';
      htmlCode = htmlCode + '  </select>  </td></tr><tr><td>Сумма кредита</td><td>';
      htmlCode = htmlCode + '<input  class="input" type="text" size=10 name="amount" value="" onkeyup="onChangeParameter()"> руб.';
      htmlCode = htmlCode + '  </td></tr><tr>  <td>    Годовая ставка  </td>';
      htmlCode = htmlCode + '<td><input  class="input" type="text" size=10 name="percent" value="" onkeyup="onChangeParameter()"> %';
      htmlCode = htmlCode + '</td></tr><tr>  <td>  Срок погашения  </td>  <td>';
      htmlCode = htmlCode + '  <select  class="input" name="term" onclick="onChangeParameter()" onkeyup="onChangeParameter()">';
      htmlCode = htmlCode + '<option ';
      if (t == 1) { htmlCode = htmlCode + ' selected '; }
      htmlCode = htmlCode +  ' value="12">1 год</option>';
      var aMonth = 0;
      for(i=2;i<5;i++)
      {
        aMonth = i*12;
        htmlCode = htmlCode + '<option ';
        if (t == i) { htmlCode = htmlCode + ' selected '; }
        htmlCode = htmlCode + ' value="' + aMonth.toString() + '">' + i.toString() + ' года</option>';
      }
      for(i=5;i<21;i++)
      {
        aMonth = i*12;
        htmlCode = htmlCode + '<option ';
        if (t == i) { htmlCode = htmlCode + ' selected '; }
        htmlCode = htmlCode + ' value="' + aMonth.toString() + '">' + i.toString() + ' лет</option>';
      }
      htmlCode = htmlCode + '<option ';
      if (t == 21) { htmlCode = htmlCode + ' selected '; }
      htmlCode = htmlCode + ' value="252">21 год</option>';
      for(i=22;i<25;i++)
      {
        aMonth = i*12;
        htmlCode = htmlCode + '<option ';
        if (t == i) { htmlCode = htmlCode + ' selected '; }
        htmlCode = htmlCode + ' value="' + aMonth.toString() + '">' + i.toString() + ' года</option>';
      }
      for(i=25;i<31;i++)
      {
        aMonth = i*12;
        htmlCode = htmlCode + '<option ';
        if (t == i) { htmlCode = htmlCode + ' selected '; }
        htmlCode = htmlCode + ' value="' + aMonth.toString() + '">' + i.toString() + ' лет</option>';
      }
      htmlCode = htmlCode + '  </select>  </td></tr><tr>  <td>';
      htmlCode = htmlCode + '<span id="pay_header">Платеж в первый месяц</span>  </td>  <td>';
      htmlCode = htmlCode + '<input  class="input" type="text" size=10 name="pay" disabled value="" onkeyup="onChangeParameter()">';
      htmlCode = htmlCode + '<span id="ccy2"></span>  </td></tr></table>';
      htmlCode = htmlCode + '<br /><input class="button" type="button" value="Построить график погашения" onclick="genTable()"></form>';
    </script>
    <br /><table style="border: 1px solid rgb(204, 204, 204);" cellpadding="10" cellspacing="0" width="350"><tbody><tr><td>
    <script>
      document.write(htmlCode);
      Init();
    </script>
    <br /></td></tr></tbody></table>
    <br />
    <table><tbody><tr><td id="table_data"><br /></td></tr></tbody></table>
    И кстати кто подскажет, почему делим на 1200? :) 1200 это ваще значение чего...
     
  2. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    А при чем тут php?
     
  3. Sachek

    Sachek Умелый

    Регистр.:
    23 мар 2009
    Сообщения:
    387
    Симпатии:
    102
    Ну я не нашел раздела по яве :) Решил тут запостить... В данном разделе и джеквери вроде обсуждают, так, что...
    Кстати вопрос все еще актуален...
     
  4. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    есть раздел "другие языки"

    по поводу jquery
    во-первых это не язык а фреймворк (или библиотека, если больше нравится это слово)
    во-вторых в некоторых случаях jquery (как впрочем и джаваскрипт) имеет отношения php - тогда и обсуждают

    ваш вопрос никакого отношения к php не имеет
     
    Sachok321 нравится это.
  5. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Процентная ставка выражена в %, а в формулах нужно использовать десятичное число - делим на 100, далее ставка годовая, а проценты начисляются помесячно - делим еще на 12. Получается что надо делить на 1200 :read:
     
    Sachok321 нравится это.