Как обратиться к предыдущему элементу массива
Доброго времени суток. В общем задача такова: нужно создать двумерный массив 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, время: 09:15. |