Solució Instruens Fabulam
De wikiserver
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 + " ";
}
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(/ /g," ");
var left = n.substring(0,Math.round(n.length/2));
var right = n.substring(Math.round(n.length/2));
left = left.replace(/ /g," ");
right = right.replace(/ /g," ");
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 = "| " + line;
}
result = result + line + " | ";
}
result = result + "<br>";
}
vores = "@" + vores + "@";
document.write(vores + "<br>" + result + vores+ "<br>" );