<html> <body> <div id="div00"> <input type="button" onclick="addLine()" value="Gimme more"></input> <input type="button" onclick="addColumn()" value="Give it out"></input> <input type="button" onclick="run()" value="Run"></input> <input type="button" onclick="takeover()" value="Take"></input> <input type="text" id="run001"></input> <br> <script> let i = 0; let x = 6; let y = 12; let a; let values; function valuearrayinit () { var k, l; values = new Array (y); for (k = 0; k < y; k++) values [k] = new Array (x); i = x*y; } function valuearrayaddy () { y = y+1; values.length = y; values [length-1] = new Array (x); i = x*y; } function valuearrayaddx () { var k; x = x+1; for (k = 0; k < y; k++) values [k].length = x; i = x*y; } function valuearrayout () { i = 0; var k, l; a = new Array (x*y); for (k = 0; k < y; k++) { for (l = 0; l < x; l++) { a [i] = document.createElement ("input"); a [i].type = "text"; a [i].id = i.toString (); a [i].value = values [k][l]; document.getElementById ("div00").appendChild (a [i]); i++; a.length = i; } p01 = document.createElement ("br"); //p01.innerText = ""; document.getElementById ("div00").appendChild (p01); } } function sum (x, y) { return x+y; } function sumx (y, beginx, endx) { var k; var sum = 0; for (k = beginx; k < endx; k++) sum = sum + values [y][k]; return sum; } function sumy (ybegin, yend, x) { var k; var sum = 0; for (k = beginy; k < endy; k++) sum = sum + values [k][x]; return sum; } function valuesinit () { var k, l; for (k = 0; k < y; k++) { for (l = 0; l < x; l++) { values [k][l] = k*x+l; } } } function takeover () { var k, l; var v; var j; for (j = 0, k = 0; (k < y) \&\& (j < i); k++) { for (l = 0; (l < x) \&\& (j < i); l++) { v = parseInt(a [j].value); values [k][l] = v; j++; } } } valuearrayinit (); valuesinit (); valuearrayout (); takeover (); let lexi; let lexp; function parserelementarsumme (cells) { var k, l; var columnbegin; var columnend; var linebegin; var linenend; var tmp; var sum; takeover (); columnbegin = cells.charCodeAt (0) - "A".charCodeAt (0); linebegin = parseInt(cells.slice (1,3)); if (cells [3] != ':') alert ("error"); columnend = cells.charCodeAt (4) - "A".charCodeAt (0); lineend = parseInt(cells.slice (5,7)); if (columnend < columnbegin) { tmp = columnend; columnend = columnbegin; columnbegin = tmp; } if (lineend < linebegin) { tmp = lineend; lineend = linebegin; linbegin = tmp; } var sum = 0; for (k = columnbegin; k <= columnend; k++) { for (l = linebegin; l <= lineend; l++) { sum = sum + values [k][l]; } } return sum; } function run () { //parserelementarsumme (""); lexi = 0; lexp = document.getElementById ("run001").value; lexp = "SUMME(SUMME(A01:B03;A01:B03);SUMME(C02:A01;A01:B03))"; alert(sum (0)); } function sum (sm) { if (lexp.slice(lexi+0,lexi+6).localeCompare("SUMME(") == 0) { lexi += 6; sm += sum (sm); if (lexp.slice (lexi,lexi+1).localeCompare (";") != 0) alert ("Error"); lexi = lexi+1; sm += sum (sm); if (lexp.slice (lexi, lexi+1).localeCompare (")") != 0) alert ("Error"); lexi = lexi+1; } else { sm = parserelementarsumme (lexp.slice(lexi,lexi+7)); lexi = lexi+7; } return sm; } run (); /* ELEMENTARSUMME=(SpaltenindexZeilendex:Spaltenindex:Zeilenindex) =SUMME(ELEMENTARSUMME;SUMME); */ </script> </div> </body> </html>
Es macht Ausdrücke, wie dieses
SUMME(SUMME(A01:B03;A01:B03);SUMME(C02:A01;A01:B03))