0
私は動的テーブル、特に下部の "demanda"行から入力を取得しようとしています。 Here you can get a visual representation of what I'm talking about。テーブルからデータを取得するループは、JavaScript内の配列内にNaNが割り当てられます。
ループの前にz = 0とx = 1のコードを思い出して、配列の長さb []はmの値です(これは動的テーブル)。問題は、どこから来たのか分からないconsole.logの値を見るとNaN(これは望ましくない)になります。
var inicio = function() {
var getDatos = function() {
var rows = parseInt($("#rows").val());
var cols = parseInt($("#cols").val());
rows = rows + 1;
cols = cols + 1;
var r1 = 1;
var numero = 1;
var num = 1;
var renglones = "<table class='centered bordered'><thead><tr><th data-field='no'></th>";
while (rows >= r1) {
var c1 = cols;
var c2 = cols + 2;
if (r1 == 1) {
var letra = 65;
var valor = 2;
while (c1 > 0) {
if (c1 == 1) {
renglones = renglones.concat("<th data-field=titulo'" + valor + "'>Oferta</th>");
c1--;
}
else {
renglones = renglones.concat("<th data-field=titulo'" + valor + "'>" + String.fromCharCode(letra) + "</th>");
letra++;
valor++;
c1--;
}
}
renglones = renglones.concat("</tr></thead><tbody>");
}
renglones = renglones.concat("<tr>");
while (c2 > 0) {
if (c2 == (cols + 2)) {
if (r1 == rows) {
renglones = renglones.concat("<td>Demanda</td>");
c2--;
}
else {
renglones = renglones.concat("<td>" + num + "</td>");
num++;
c2--;
}
}
else if (c2 == 1) {
renglones = renglones.concat("</tr>");
c2--;
}
else if (c2 == 2 && r1 == rows) {
renglones = renglones.concat("<td></td>");
c2--;
}
else {
renglones = renglones.concat("<td><input id='caja" + numero + "' type='number' class='validate'></td>");
c2--;
numero++;
}
}
if (r1 == rows) {
renglones = renglones.concat("</tbody> </table>");
}
r1++;
}
renglones = renglones.concat("<div class='row'><div class='col s12 center'><a class='waves-effect waves-light btn ' id='btnAceptar'>Aceptar</a></div></div>");
$("#divTabla").html(renglones);
$("#divTabla #btnAceptar").on("click", metodoEsn);
};
var metodoEsn = function() {
var m = parseInt($("#rows").val());//renglones
var n = parseInt($("#cols").val());//columnas
var tp = new Array(m + 1);
var allo = new Array(m + 1);
var x = 1;
var z = 0;
var a = new Array(m + 1);//5
var b = new Array(n + 1);
//int tp[][]= new int[5][5];
var k = 1, count = 0;
var tc = 0, mult = 1, sum = 0;
var i, j;
var c_sum = 0, d_sum = 0;
for (i = 1; i <= m; i++) {
//se crean las columnas de la tabla
tp[i] = new Array(n + 1);
console.log("se creo la columna numero " + i);
}
for (i = 1; i <= m; i++) {
allo[i] = new Array(n + 1);
console.log("se creo la columna numero " + i + "de allo");
}
//Se ingresan los valores de la tabla
for (i = 1; i <= m; i++) {
for (j = 1; j <= n; j++) {
tp[i][j] = parseInt($("#caja" + x).val());
allo[i][j] = 0;
console.log("se ingresa el valor de la caja " + i + " " + j);
x++;
}
}
x = 0;
//Ingresa Oferta
for (i = 1; i <= m; i++) {
x += n + 1;
a[i] = parseInt($("#caja" + x).val());
c_sum += a[i];
console.log("se ingresa la caja" + a[i]);
}
x = 1;
console.log("valor " + c_sum);
//Ingresa Demanda
console.log("se ingresa la demanda");
for (i = 1; i <= n; i++) {
x += m + 2;
z++;
if (z == m) {
for (k = 1; k < n + 2; k++) {
x++;
b[k] = parseInt($("#caja" + x).val());
d_sum += b[k];
console.log("se ingresa el valor de la caja " + k);
}
break;
}
}
console.log("valor " + d_sum);
for (i = 1; i <= b.length; i++) {
console.log(b[i]);
}
console.log("se inician las cuentas de esn");
if (c_sum == d_sum) {
for (i = 1; i <= m; i++) {
console.log("todo bien");
for (j = k; j <= n; j++) {
console.log("todo bien x2");
if (a[i] > b[j]) {
console.log("todo bien x3");
mult = tp[i][j];
mult = mult * b[j];
allo[i][j] = b[j];
a[i] = a[i] - b[j];
sum += mult;
mult = 1;
count++;
console.log("por aqui todo bien");
//k=1;
} else {
mult = tp[i][j];
mult *= a[i];
allo[i][j] = a[i];
b[j] = b[j] - a[i];
sum += mult;
mult = 1;
k = j;
count++;
console.log("por aqui tambien");
break;
}
}
}
console.log("se termino de hacer el metodo");
var tabla = "<table class='centered bordered'>";
tabla = tabla.concat("<table> <tbody>");
for (i = 1; i <= m; i++) {
tabla = tabla.concat("<tr>");
for (j = 1; j <= n; j++) {
tabla = tabla.concat("<td>" + allo[j][i] + "</td>");
}
tabla = tabla.concat("</tr>");
}
tabla = tabla.concat("</tbody> </table>");
$("#divTabla2").html(tabla);
console.log("se despliega la tabla");
if ((m + n - 1) == count)
console.log("Z es igual a: " + sum);
else {
console.log("La solucion de este problema no se puede encontrar");
}
}
};
$("#btnCrear").on("click", getDatos);
HTMLコードが掲載さ:
<!DOCTYPE html>
<html lang="en">
<head>
<link type="text/css" rel="stylesheet" href="css/materialize.css" media="screen,projection"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Problemas de transporte: Metodo Esquina Superior Noroeste.</title>
</head>
<body>
<div class="container">
<h5>Problemas de transporte: Metodo Esquina Superior Noroeste.</h5>
ESN?
<P>Primero que nada, que es el metodo de ESN?<br> El método de la esquina Noroeste es un algoritmo heurístico capaz de solucionar problemas de transporte o distribución mediante la consecución de una solución básica inicial que satisfaga todas las restricciones existentes sin que esto implique que se alcance el costo óptimo total. </p>
<br>
<h6>Calcular</h6>
<div class="input-field col s6">
<input id="rows" type="number" class="validate">
<label for="rows">Origenes</label>
</div>
<div class="input-field col s6">
<input id="cols" type="number" class="validate">
<label for="cols">Destinos</label>
</div>
<br>
<div class="row">
<div class="col s12 center"><a class="waves-effect waves-light btn " id="btnCrear">Crear</a></div>
</div>
</div>
<div class="divider"></div>
<div id="divTabla"></div>
<div id="divTabla2"></div>
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="js/materialize.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>
ここで 'break;'は何ですか? – Mahi
あなたのHTMLコード – mean
を今すぐ追加してください。 – Angelmartin11