Advertisement
richarduie

formulaEvaluator.html

May 26th, 2013
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 2.15 KB | None | 0 0
  1. <html>
  2. <head>
  3.     <script type="text/javascript">
  4.         function FormulaEvaluator()
  5.         {
  6.             this.main = function() {
  7.                 // prompt user for formula string
  8.                 var formula = prompt( "Enter a formula.", "");
  9.                 // variables will be presumed to be single, lower-case
  10.                 // alphabetical characters - kill everything else
  11.                 var variables = this.kernel(
  12.                     formula.replace( new RegExp( "[^a-z]", "g"), "" )
  13.                 );
  14.        
  15.                 // to collect values or each variable
  16.                 var values = new Array( variables.length );
  17.                 // for each lower-case variable name, collect value
  18.                 for (var i = 0; i < variables.length; i++) {
  19.                     values[ i ] = prompt(
  20.                         "Enter the value of the variable " +
  21.                         variables.charAt( i ) + ": "
  22.                     );
  23.                 }
  24.        
  25.                 // copy original formula
  26.                 var evaluable = formula;
  27.                 // substitute the corresponding value for each variable
  28.                 // in the original formula
  29.                 for (var i = 0; i < variables.length; i++) {
  30.                     evaluable = evaluable.replace(
  31.                         new RegExp( variables.charAt( i ), "g"), values[ i ]
  32.                     );
  33.                 }
  34.        
  35.                 // evaluate the formula
  36.                 var result = eval( evaluable );
  37.            
  38.                 // compose output to report
  39.                 var rpt = "formula: " + formula + "\nwith variables:";
  40.                 for (var i = 0; i < variables.length; i++) {
  41.                     rpt += "\n   " + variables.charAt( i ) + " = " +
  42.                         values[ i ];
  43.                 }
  44.                 rpt += "\ntranslates to: " + evaluable + " and " +
  45.                     "\nevaluates to: " + result;
  46.                 alert( rpt );
  47.             };
  48.             // Return unique elements
  49.             this.kernel = function(a) {
  50.                 // Set hashtable style associative array working storage.
  51.                 var r = new Array();
  52.                 // For each element in a...
  53.                 for (var i = 0; i < a.length; i++) {
  54.                     // ...assign key/value pair - repeated values have same key &
  55.                     // replace one another, leaving only single instance of value.
  56.                     r[a[i]] = a[i];
  57.                 }
  58.                 // Initialize return.
  59.                 var k = "";
  60.                 // For each key in r...
  61.                 for (var el in r) {
  62.                     // ...set value into index-oriented array.
  63.                     k += r[el];
  64.                 }
  65.                 return k;
  66.             };
  67.         };
  68.        
  69.         window.onload = function() {
  70.             (new FormulaEvaluator()).main();
  71.         };
  72.     </script>
  73. </head>
  74. <body></body>
  75. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement