" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(7*Math.random());
terms[1] = varname_logic(i,0);
terms[2] = varname_logic(i+1,0);
terms[3] = varname_logic(i+2,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+10;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*250
nheight=getFontSize()/16*50
m1=""
EquationText%QUESTION.NUMBER%= m1+m2+m3+e1%QUESTION.NUMBER%+" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*30
nheight=getFontSize()/16*50
m1=""
e3%QUESTION.NUMBER%=""
e4%QUESTION.NUMBER%=""
e5%QUESTION.NUMBER%=""
e6%QUESTION.NUMBER%=""
e7%QUESTION.NUMBER%=""
e8%QUESTION.NUMBER%=""
e9%QUESTION.NUMBER%=""
e10%QUESTION.NUMBER%=""
e11%QUESTION.NUMBER%=""
MathML_terms[Nvar+1] = m1+m2+m3+e2%QUESTION.NUMBER%;
MathML_terms[Nvar+2] = m1+m2+m3+e3%QUESTION.NUMBER%;
MathML_terms[Nvar+3] = m0+m2+m3+e4%QUESTION.NUMBER%;
MathML_terms[Nvar+4] = m1+m2+m3+e5%QUESTION.NUMBER%;
MathML_terms[Nvar+5] = m1+m2+m3+e6%QUESTION.NUMBER%;
MathML_terms[Nvar+6] = m1+m2+m3+e7%QUESTION.NUMBER%;
MathML_terms[Nvar+7] = m0+m2+m3+e8%QUESTION.NUMBER%;
MathML_terms[Nvar+8] = m1+m2+m3+e9%QUESTION.NUMBER%;
MathML_terms[Nvar+9] = m1+m2+m3+e10%QUESTION.NUMBER%;
MathML_terms[Nvar+10] = m0+m2+m3+e11%QUESTION.NUMBER%;
td = ""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+1] = elements[i][3];
elements[i][Nvar+4] = NOT(elements[i][1]);
elements[i][Nvar+6] = elements[i][2];
elements[i][Nvar+9] = NOT(elements[i][3]);
elements[i][Nvar+5] = NOR(elements[i][Nvar+4],elements[i][Nvar+6]);
elements[i][Nvar+8] = OR(elements[i][Nvar+5],elements[i][Nvar+9]);
elements[i][Nvar+2] = AND(elements[i][Nvar+1],elements[i][Nvar+8]);
elements[i][Nvar+3] = "((";
elements[i][Nvar+7] = ")";
elements[i][Nvar+10] = ")";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j =1; j < 4; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 4; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4,5,6,7,8);
allowed_columns = new Array(5,8,11);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"1"+tdred+"4 "+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"3"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("
" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(7*Math.random());
terms[1] = varname_logic(i,0);
terms[2] = varname_logic(i+1,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+14;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*250
nheight=getFontSize()/16*45
m1=" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*30
nheight=getFontSize()/16*50
m1=""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+2] = NOT(elements[i][1]);
elements[i][Nvar+4] = elements[i][2];
elements[i][Nvar+8] = elements[i][2];
elements[i][Nvar+10] = NOT(elements[i][1]);
elements[i][Nvar+13] = elements[i][2];
elements[i][Nvar+3] = IFF(elements[i][Nvar+2],elements[i][Nvar+4]);
elements[i][Nvar+9] = NOT(IFF(elements[i][Nvar+8],elements[i][Nvar+10]));
elements[i][Nvar+12] = IF(elements[i][Nvar+9],elements[i][Nvar+13]);
elements[i][Nvar+6] = AND(elements[i][Nvar+3],elements[i][Nvar+12]);
elements[i][Nvar+1] = "(";
elements[i][Nvar+5] = ")";
elements[i][Nvar+7] = "[(";
elements[i][Nvar+11] = ")";
elements[i][Nvar+14] = "]";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j < 3; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 3; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4);
allowed_columns = new Array(5,8,11,14);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"4 "+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"3"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("
" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(7*Math.random());
terms[1] = varname_logic(i,0);
terms[2] = varname_logic(i+1,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+10;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*200
nheight=getFontSize()/16*50
m1=" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*40
nheight=getFontSize()/16*50
m1=""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+2] = NOT(elements[i][2]);
elements[i][Nvar+5] = elements[i][2];
elements[i][Nvar+7] = NOT(elements[i][1]);
elements[i][Nvar+10] = elements[i][1];
elements[i][Nvar+6] = OR(elements[i][Nvar+5],elements[i][Nvar+7]);
elements[i][Nvar+3] = NOR(elements[i][Nvar+2],elements[i][Nvar+6]);
elements[i][Nvar+9] = IF(elements[i][Nvar+3],elements[i][Nvar+10]);
elements[i][Nvar+1] = "(";
elements[i][Nvar+4] = "(";
elements[i][Nvar+8] = "))";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j < 3; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 3; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4);
allowed_columns = new Array(5,8,11);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"1"+tdred+"3 "+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"4"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("
" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(7*Math.random());
terms[1] = varname_logic(i,0);
terms[2] = varname_logic(i+1,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+14;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*250
nheight=getFontSize()/16*45
m1=" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*30
nheight=getFontSize()/16*50
m1=""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+2] = elements[i][1];
elements[i][Nvar+4] = NOT(elements[i][2]);
elements[i][Nvar+7] = NOT(elements[i][1]);
elements[i][Nvar+11] = elements[i][2];
elements[i][Nvar+13] = NOT(elements[i][1]);
elements[i][Nvar+3] = AND(elements[i][Nvar+2],elements[i][Nvar+4]);
elements[i][Nvar+6] = NAND(elements[i][Nvar+3],elements[i][Nvar+7]);
elements[i][Nvar+12] = NOR(elements[i][Nvar+11],elements[i][Nvar+13]);
elements[i][Nvar+9] = IF(elements[i][Nvar+6],elements[i][Nvar+12]);
elements[i][Nvar+1] = "(";
elements[i][Nvar+5] = ")";
elements[i][Nvar+8] = "[(";
elements[i][Nvar+10] = ")";
elements[i][Nvar+14] = "]";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j < 3; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 3; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4);
allowed_columns = new Array(5,8,11,14);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"3"+tdred+"1 "+tdred+"4 "+tdred+"1"+tdred+"2"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("
" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(7*Math.random());
terms[1] = varname_logic(i,0);
terms[2] = varname_logic(i+1,0);
terms[3] = varname_logic(i+2,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+12;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*200
nheight=getFontSize()/16*50
m1=" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*30
nheight=getFontSize()/16*50
m1=""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+3] = NOT(elements[i][1]);
elements[i][Nvar+5] = elements[i][3];
elements[i][Nvar+9] = NOT(elements[i][2]);
elements[i][Nvar+11] = elements[i][3];
elements[i][Nvar+4] = IFF(elements[i][Nvar+3],elements[i][Nvar+5]);
elements[i][Nvar+1] = NOT(elements[i][Nvar+4]);
elements[i][Nvar+10] = AND(elements[i][Nvar+9],elements[i][Nvar+11]);
elements[i][Nvar+7] = NAND(elements[i][Nvar+1],elements[i][Nvar+10]);
elements[i][Nvar+2] = "(";
elements[i][Nvar+6] = ")";
elements[i][Nvar+8] = "(";
elements[i][Nvar+12] = ")";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j =1; j < 4; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 4; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4,5,6,7,8);
allowed_columns = new Array(4,7,10,13);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"3 "+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"4 "+tdred+"1"+tdred+"2"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("
" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(21*Math.random());
terms[1] = varname(i,0);
terms[2] = varname(i+1,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+15;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*250
nheight=getFontSize()/16*50
m1=" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*35
nheight=getFontSize()/16*50
m1=""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+3] = NOT(elements[i][1]);
elements[i][Nvar+5] = elements[i][2];
elements[i][Nvar+9] = NOT(elements[i][2]);
elements[i][Nvar+12] = elements[i][1];
elements[i][Nvar+14] = elements[i][2];
elements[i][Nvar+4] = NAND(elements[i][Nvar+3],elements[i][Nvar+5]);
elements[i][Nvar+1] = NOT(elements[i][Nvar+4]);
elements[i][Nvar+13] = IFF(elements[i][Nvar+12],elements[i][Nvar+14]);
elements[i][Nvar+10] = OR(elements[i][Nvar+9],elements[i][Nvar+13]);
elements[i][Nvar+7] = IF(elements[i][Nvar+1],elements[i][Nvar+10]);
elements[i][Nvar+2] = "(";
elements[i][Nvar+6] = ")";
elements[i][Nvar+8] = "[";
elements[i][Nvar+11] = "(";
elements[i][Nvar+15] = ")]";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j < 3; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 3; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4);
allowed_columns = new Array(3,6,9,12,15);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"3 "+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"4 "+tdred+"1"+tdred+"3 "+tdred+"1"+tdred+"2"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("
" ;
SHOW = "";
for (var i=5; i "+document.forms[0].elements[item+3].value+" "+ANS+" "+full_table%QUESTION.NUMBER%+" ";
}
function question%QUESTION.NUMBER%()
{
//undecided_string = ".";
undecided_string = "";
terms = new Array;
MathML_terms = new Array;
A = Math.ceil(2*Math.random())-1;
B = Math.ceil(2*Math.random())-1;
number_wanted = 5;
i = Math.ceil(7*Math.random());
terms[1] = varname_logic(i,0);
terms[2] = varname_logic(i+1,0);
Nvar = terms.length-1;
Nrow = Math.pow(2,Nvar);
Ncolumn = Nvar+18;
QuestionText%QUESTION.NUMBER% = personname()+" is trying to find the values in the truth table for the statement: ";
QuestionText2%QUESTION.NUMBER% = "Input the missing values (T or F) in the order indicated, separated by commas (no spaces and no full stop at the end). ";
QuestionText3%QUESTION.NUMBER% = " Important: Logical operations should be performed according to precedence rules.";
nwidth=getFontSize()/16*270
nheight=getFontSize()/16*45
m1=" "+QuestionText%QUESTION.NUMBER%+EquationText%QUESTION.NUMBER%+display_table%QUESTION.NUMBER%+" ");
document.write(QuestionText2%QUESTION.NUMBER%+" ")
document.write(QuestionText3%QUESTION.NUMBER%);
document.write("")
}
if (document.forms[0].name=="FEEDBACK")
{}
else
{question%QUESTION.NUMBER%()}
]]>
"}
else
{document.forms[0].elements[item+3].value =
"Your answer "+document.forms[0].elements[item].value+", should have been "+COR+SHOW+" "}
document.forms[0].elements[item+3].value = QT + EquationText%QUESTION.NUMBER% + display_table%QUESTION.NUMBER%+"
"
nwidth=getFontSize()/16*30
nheight=getFontSize()/16*50
m1=""
tdred = " "
th = " "
elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
display_elements= gettruthtable(MathML_terms,Nvar,Ncolumn);
for (i = 1; i <= Nrow; i++ ) {
elements[i][Nvar+3] = elements[i][1];
elements[i][Nvar+6] = NOT(elements[i][2]);
elements[i][Nvar+9] = elements[i][2];
elements[i][Nvar+11] = NOT(elements[i][1]);
elements[i][Nvar+15] = elements[i][1];
elements[i][Nvar+17] = elements[i][2];
elements[i][Nvar+10] = AND(elements[i][Nvar+9],elements[i][Nvar+11]);
elements[i][Nvar+16] = IF(elements[i][Nvar+17],elements[i][Nvar+15]);
elements[i][Nvar+7] = NOR(elements[i][Nvar+6],elements[i][Nvar+10]);
elements[i][Nvar+4] = IFF(elements[i][Nvar+3],elements[i][Nvar+7]);
elements[i][Nvar+1] = NOT(elements[i][Nvar+4]);
elements[i][Nvar+13] = NAND(elements[i][Nvar+1],elements[i][Nvar+16]);
elements[i][Nvar+2] = "{";
elements[i][Nvar+5] = "[";
elements[i][Nvar+8] = "(";
elements[i][Nvar+12] = ")]}";
elements[i][Nvar+14] = "(";
elements[i][Nvar+18] = ")";
}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j <= Ncolumn; j++ ) {
elements[i][j]=TF(elements[i][j],undecided_string);
}}
for (i = 1; i <= Nrow; i++ ) {
for (j = 1; j < 3; j++ ) {elements[i][j]=""+elements[i][j]+"";
display_elements[i][j]=elements[i][j];
}
for (j = 3; j <= Ncolumn; j++ ) {
if(elements[i][j] != undecided_string){display_elements[i][j]=".";}else{display_elements[i][j]=undecided_string;}
}
}
allowed_rows = new Array(1,2,3,4);
allowed_columns = new Array(3,6,9,12,15,18);
indices = displayarray(number_wanted,0,(allowed_rows.length)*(allowed_columns.length)-1,1);
indices = jSort(indices, 0, number_wanted-1)
// alert(indices);
correct = "";
for(var inum = 0; inum < number_wanted; inum++){
ic = allowed_rows[Math.floor(indices[inum]/allowed_columns.length)];
jc = allowed_columns[indices[inum] % allowed_columns.length];
display_elements[ic] [jc] = inum + 1;
if(inum == number_wanted-1){correct += elements[ic] [jc]}else{correct += elements[ic] [jc] +","};
}
elementsb = "";
display_elementsb = "";
for (i = 0; i <= Nrow; i++ ) {
j = 1;
elementsa = "";
display_elementsa = "";
while (j <= Ncolumn) {
elementsa = elementsa + td+elements[i][j]+"";
display_elementsa = display_elementsa + td+display_elements[i][j]+"";
j++;
}
elementsb = elementsb + " "+elementsa+" ";
display_elementsb = display_elementsb + ""+display_elementsa+" ";
}
elementsb += ""+tdred+"# "
full_table%QUESTION.NUMBER% ='"+tdred+"5 "+tdred+"1"+tdred+"4 "+tdred+"1"+tdred+"3 "+tdred+"1"+tdred+"2"+tdred+"1 "+tdred+"6 "+tdred+"1"+tdred+"2"+tdred+"1 '+elementsb+'
';
display_table%QUESTION.NUMBER% =''+display_elementsb+'
';
Correct%QUESTION.NUMBER% = correct;
document.write("