Solució Instruens Fabulam

De wikiserver
La revisió el 15:37, 7 oct 2013 per Asalinas (Discussió | contribucions)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Dreceres ràpides: navegació, cerca

Es recorda que l'ús de funcions no s'explicarán fins la UF2. Per aixó, en aquest exercici no s'utilitzaran.


var d = "==<%42&t&ei%what is the answer?&yykykykykykykykykyk&4444444";

var descfila = d.split("%");
//càlcul del nombre màxim de caràcters per columna
var maxcharcol = [];
for (var i = 1; i<descfila.length; i++)
{
	var palabres = descfila[i].split("&");	
	for(var j = 0; j < palabres.length; j++){
		if(isNaN(maxcharcol[j])) maxcharcol[j] = palabres[j].length;
		else {maxcharcol[j] = Math.max(maxcharcol[j],palabres[j].length);}
	}
}

// variable resultat
var result = "";
//variable capçalera
vores ="";

//escriure contingut
for (var i = 1; i< descfila.length; i++)
{
	var palabres = descfila[i].split("&");	
	//posem la separació entre la linea capçalera i les files
	//aprofitem el bucle per fer el marc (varible vores)
	if( i == 2)
	{
		var line = "";
		for(var j = 0; j < maxcharcol.length; j++)
		{
		
			//ES posen els '+' per la separacio entre columnes.
			//només es posa si hi ha + de 1 columna
			if( j != 0 && j <= maxcharcol.length -1)
			{
				line =  line + "-+-"  ;
				vores = vores + "---";
			}
			//Es posen els '-'
			for (n = 0 ; n < maxcharcol[j]; n++)
			{
				vores = vores + "-";
				line = line + "-";
			}
			//Es posen els '|' d'inici i final, si estem a la 1º o última columna.
			if (j==0)
			{
				//primera columna
				line = "|-" + line;
				vores = "-" + vores ;
				
			}

			if (j == maxcharcol.length -1){
				//última columna
				line = line + "-|";
				vores = "-" + vores ;
			}

		}
		result = result + line + "<br>";
	}	
	
	//S'escriu la paraules de cadascuna de les cel·les i files.
	for(var j = 0; j < palabres.length; j++)
	{
		var line = "";
		numchar = maxcharcol[j] - palabres[j].length;
		//s'escriu la paraula amb espais per omplir la columna

		for (n = 0; n < numchar; n++)
		{
			line = line + "&nbsp;";
		}		
		if (i == 1 )//si estem a la capçalera
		{//s'ha d'alinear la capçalera segons sigui < > = 
			var c = descfila[0].charAt(j);
			switch(c ){
				case ">":	
					line = line + palabres[j];
					break;
				case "<":
					line = palabres[j] + line;
					break;
				case "=":
				// S'utilitza el modificador /g per tal que reemplaci totes les ocurrències
					var n=line.replace(/&nbsp;/g," ");
					var left = n.substring(0,Math.round(n.length/2));
					var right = n.substring(Math.round(n.length/2));
					left = left.replace(/ /g,"&nbsp");
					right = right.replace(/ /g,"&nbsp");
					line = left + palabres[j] + right;
					break;
			}
		}
		else{//si no estem a la capçalera s'alinea normal. A la dreta.
			line = line + palabres[j];
		}		

		//es possen els separadors de columna.
		if(j == 0){ //es la 1a columna
			line = "|&nbsp;" + line;
		}
		result = result + line + "&nbsp;|&nbsp;";		
	}

	result = result + "<br>";
	
}
vores = "@" + vores + "@";
document.write(vores + "<br>" +  result  +  vores+ "<br>" );