Как обратиться к предыдущему элементу массива
Доброго времени суток. В общем задача такова: нужно создать двумерный массив 20 на 20 в котором изначально известны только 2 значения - A[10][0] и A[11][0], остальные нули. Затем по формуле A[SUB]ij[/SUB]=0.5(A[SUB]i-1,j-1[/SUB]+A[SUB]i+1,j-1[/SUB] необходимо рассчитать последующие значения. Создаю массив, задаю начальные значения:
var n = 20, m = 20; var arr = []; for (var i = 0; i < m; i++){ arr[i] = []; for (var j = 0; j < n; j++){ arr[i][j] = 0; if(j==0 && (i==10 || i==11)){ arr[i][j] = 120; } document.write(arr[i][j]+' '); } document.write('<br/>'); } и теперь главная проблема - как подступиться к значению предыдущего элемента массива, чтоб посчитать следующее? |
Цитата:
а можно увидеть результат, который должен получится? |
|
goody-goody,
осталось узнать формулу по которой получается этот результат :) |
goody-goody, так?
<html> <script> var n = 20, m = 20; var arr = []; for (var j = 0; j < n; j++){ for (var i = 0; i < m; i++){ if(!arr[i]) arr[i] = []; arr[i][j] = 0; if(j==0 && (i==10 || i==11)){ arr[i][j] = 120; } if(j > 0){ if(i-1 >= 0 && i+1 < m) arr[i][j] = 0.5 * (arr[i-1][j-1] + arr[i+1][j-1]) else if(i-1 < 0) arr[i][j] = 0.5 * (0 + arr[i+1][j-1]) else arr[i][j] = 0.5 * (arr[i-1][j-1] + 0) } } } for(var i=0;i<m;i++){ for(var j=0;j<n;j++){ arr[i][j] = arr[i][j].toFixed(2); document.write(arr[i][j]+' '); } document.write('<br/>'); } </script> </html> |
ой, спасибо большое! я просто такой новичек в веб-разработке, только осваиваю js :)
|
sanmihan,
а посмотреть? |
sanmihan, я изначально свой массив с нулями заганяла в табличку, а теперь ваш код что-то не могу правильно загнать, отображается не горизонтально, а вертикально (на самое начало скрипта прошу не обращать внимания, там расчеты идут)
function addTable() { var q = 0.8, //вихід стічних вод H = 1.8, //серендня глибина водотоку(стала) v = 0.2, //середня швидкість течії(стала) D=0.0028, //коефіцієнт турбулентної дифузії(стала) hMala = 11; //відстань від берега до місця випуску вод(стала) var control = document.myForm.control.value;// контрольна відстань var konc = document.myForm.konc.value;//концентрація забруднюючої речовини var y = q/(2*H*v); //поперечний розмір початкового прямокутника var x = (v*Math.pow(y,2))/(2*D); //відстань між перерізами var k = Math.round(control/x)+2; //кількість стовбців console.log('кідькість стовбців - ' + k); var index1 = Math.round(hMala/y); var index2 = index1+1; var n = index2*2; //кількість рядків console.log('кількість рядків - ' + n) var col = 0; var tr = "", td = "", th = "", main = document.getElementById("main"), table = document.createElement("table"); table.setAttribute("border", "2px"); var firstTable = document.querySelector("table"); var tr = document.createElement("tr"); var th = document.createElement("th"); var firstHeading = "Відстань від берега/" + "<br>" + "Відстань від джерела"; th.innerHTML = firstHeading; tr.appendChild(th); for (var j = 0; j < k; j++) { var th = document.createElement("th"); th.innerHTML=col; tr.appendChild(th); table.appendChild(tr); col = Math.round((col+x)*100)/100; } var arr = []; for (var j = 0; j < n; j++){ var tr = document.createElement("tr"); var th = document.createElement("th"); th.innerHTML=j; tr.appendChild(th); for (var i = 0; i < k; i++){ if(!arr[i]) arr[i] = []; arr[i][j] = 0; if(j==0 && (i==10 || i==11)){ arr[i][j] = 120; } if(j > 0){ if(i-1 >= 0 && i+1 < k) arr[i][j] = 0.5 * (arr[i-1][j-1] + arr[i+1][j-1]) else if(i-1 < 0) arr[i][j] = 0.5 * (0 + arr[i+1][j-1]) else arr[i][j] = 0.5 * (arr[i-1][j-1] + 0) } var cell =arr[i][j] var td = document.createElement("td"); td.innerHTML=(cell); tr.appendChild(td); } table.appendChild(tr); } if (firstTable == null) { return main.appendChild(table); } } |
ой, еще же html нужен для полноты картины
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Розповсюдження</title> <script src='jquery-2.1.4.min.js'></script> <link rel="stylesheet" type="text/css" href="jquery-ui-1.10.4.custom/css/custom-theme/jquery-ui-1.10.4.custom.css" /> <script src='jquery-ui-1.10.4.custom/js/jquery-ui-1.10.4.custom.min.js'></script> <script src='script.js'></script> </head> <body> <div id='main' class="ui-widget-content ui-corner-top"> <div class="ui-widget-header ui-corner-top form_pad"> <h1>Моделювання процесу розповсюдження забруднюючих речовин</h1> </div> <h3>Введіть дані</h3> <form name='myForm'> <p>Назва речовини: <select required> <option value='kysen'>Розчинений кисень</option> <option value='sulfat'>Сульфати</option> <option value='hloryd'>Хлориди</option> <option value='azot'>Азот амонійний</option> <option value='nitrat'>Нітрати</option> <option value='nitryt'>Нітрити</option> <option value='fosfat'>Фосфати</option> <option value'carbomid'>Карбаміди</option> </select></p> <p>Контрольна відстань: <input type='text' value='500' size='5' name='control'></p> <p>Вихід стічних вод: <input type='text' size='5' value='53,5' required></p> <p>Концентрація забруднюючої речовини: <input type='text' name='konc' size='5' value='120' required></p> <input type='button' value='Змоделювати' name='mySubmit' onclick='addTable()' style='margin-bottom: 2%'> </form> </div> </body> </html> |
:)
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> div.t{border:1px solid #8B4513;width:4.7%;text-align:center;font-size:.8em;} .test{margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center; width: 800px;} .red{color:#F00;font-weight:bold} </style> </head> <body> <script> var n = 20, m = 20; var arr = []; for (var j = 0; j < n; j++){ for (var i = 0; i < m; i++){ if(!arr[i]) arr[i] = []; arr[i][j] = 0; if(j==0 && (i==10 || i==11)){ arr[i][j] = 120; } if(j > 0){ if(i-1 >= 0 && i+1 < m) arr[i][j] = 0.5 * (arr[i-1][j-1] + arr[i+1][j-1]) else if(i-1 < 0) arr[i][j] = 0.5 * (0 + arr[i+1][j-1]) else arr[i][j] = 0.5 * (arr[i-1][j-1] + 0) } } } var d= document.createElement('div'); d.className = 'test'; document.body.appendChild(d); for(var i=0;i<m;i++){ for(var j=0;j<n;j++){ cls = 't'; arr[i][j] && (arr[i][j] = arr[i][j].toFixed(2).replace(/\.?0+$/,'')) && (cls = 't red'); var div = document.createElement('div'); div.className = cls; div.appendChild(document.createTextNode(arr[i][j])); d.appendChild(div); } } </script> </body> </html> |
Часовой пояс GMT +3, время: 15:00. |