Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/04/2014, 17:59
delarosan1
 
Fecha de Ingreso: junio-2013
Mensajes: 28
Antigüedad: 11 años, 7 meses
Puntos: 1
Bucle que imprime mal

Hola, tengo un problema con este código y es que al imprimir la lista de propietarios hay puertas que se repiten en el bucle, que es lo que tengo mal? Muchas gracias.

index.html
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<title>Tarea 1 Junio</title>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<script type="text/javascript" src="./funciones.js"></script>
	</head>
	<body>
		
	</body>
</html>
funciones.js
Código:
//constructor de objetos tipo Edificio que recibe parametros
function edificio(calle, numero, codigo){
	
	//propiedades del objeto Edificio
	this.calle = calle;
	this.numero = numero;
	this.codigo = codigo;
	this.plantas = new Array(); // para las plantas creamos un array de plantas
	
	//metodos del objeto Edificio
	this.modificarNumero = function (numero) // metodo para modificar numero
	{
		this.numero = numero;
	};
	
	// metodo que agrega plantas al array plantas, y en cada planta agrega el numero de puertas
    this.agregarPlantasYPuertas = function(numPlantas, puertas)
    {
        if (this.plantas.length == 0)   // si el array no contiene elementos
        {
            for (var i = 0; i < numPlantas; i++)  // bucle para rellenar el array de plantas con un array por cada planta
            {
                this.plantas[i] = new Array();
                for (var j = 0; j < puertas; j++)   // bucle para añadir en cada array de plantas las puertas que hay, tb array
                {
                    this.plantas[i].push("");    // con metodo push se añaden elementos al array de puertas
                }
            }
        }
        else    // si esta creado el array se añaden plantas y puertas a las que ya habia
        {
            for (var i = 0; i < numPlantas; i++)
            {
                this.plantas[this.plantas.length] = new Array();
                for (var j = 0; j < puertas; j++)
                {
                    this.plantas[this.plantas.length-1].push("");
                }
            }
        }
    };
	this.modificarCalle = function (calle)
	{
		this.calle = calle;
	};
	
	this.modificarCodigoPostal = function (codigo)
	{
		this.codigo = codigo;
	};
	
	this.imprimeCalle = function ()
	{
		return this.calle;
	};
	
	this.imprimeNumero = function ()
	{
		return this.numero;
	};
	
	this.imprimeCodigoPostal = function ()
	{
		return this.codigo;
	};
	
	this.imprimePlantas = function()    // metodo que imprime informacion de las plantas
    {
        document.write("<h4>Listado de propietarios del edificio de la calle " + this.imprimeCalle() + " con numero: " + this.imprimeNumero() + "</h4>");
        for(var i = 0;i < this.plantas.length;i++)
        {
            for(var j = 0;j < this.plantas[i].length;j++)
            {
                document.write("<li>El propietario de la puerta "+(parseInt(edificioA.plantas[i].indexOf(edificioA.plantas[i][j]))+1)+" de la planta "+(parseInt(edificioA.plantas.indexOf(edificioA.plantas[i]))+1)+": "+edificioA.plantas[i][j]+"</li>");
            }
        }
    };
    
    this.agregarPropietario = function(nombre, planta, puerta)  // metodo que agrega propietario a cada puerta de cada planta
    {
        this.plantas[planta][puerta] = nombre;
        document.write("<li>"+edificioA.plantas[planta][puerta] + " es ahora el propietario de la puerta " + (parseInt(edificioA.plantas[planta].indexOf(edificioA.plantas[planta][puerta]))+1) + " de la planta " + (parseInt(edificioA.plantas.indexOf(edificioA.plantas[planta]))+1) + ".</li>");
        
    };
	
	document.write("<li>Construido nuevo edificio en calle: "+calle+", nº: "+numero+", CP: "+codigo+".</ul>");
}

document.write("Instanciamos 3 objetos edificioA, edificioB y edificioC con estos datos:</br></br>");

var edificioA = new edificio("Garcia Prieto",58,15706);
var edificioB = new edificio("Camino Caneiro",29,32004);
var edificioC = new edificio("San Clemente","s/n",15705);

document.write("<br/><br/>");
document.write("<li>El código postal del edificio A es: "+edificioA.imprimeCodigoPostal()+".</li>");
document.write("<li>La calle del edificio C es: "+edificioC.imprimeCalle()+".</li>");
document.write("<li>El edificio B está situado en la calle "+edificioB.imprimeCalle()+" número "+edificioB.imprimeNumero()+".</li>");
document.write("<br/>");

edificioA.agregarPlantasYPuertas(2, 3);

document.write("Agregamos " + edificioA.plantas.length + " plantas y " + edificioA.plantas[0].length + " puertas por planta al edificio A...<br/>");

document.write("<br/>Agregamos 4 propietarios al edificio A...<br/><br/>");

edificioA.agregarPropietario("Jose Antonio Lopez.", 0, 0);
edificioA.agregarPropietario("Luisa Martinez.", 0, 1);
edificioA.agregarPropietario("Marta Castellón.", 0, 2);
edificioA.agregarPropietario("Antonio Pereira.", 1, 1);

edificioA.imprimePlantas();

document.write("<br/>Agregamos 1 planta más al edificio A...<br/><br/>");
document.write("Agregamos 1 propietario más al edificio A planta 3, puerta 2...<br/>");
edificioA.agregarPlantasYPuertas(1, 3);

document.write("</br>");
edificioA.agregarPropietario(" Pedro Meijide", 2, 1);

edificioA.imprimePlantas();