private String SolveSteps(valuesStruct valueMC) { valuesCompare valuesRank = new valuesCompare(10, 10, 10); decimal[] valuesTmp = new decimal[10]; int[] iComplements = new int[10]; decimal A = valueMC.values[0]; decimal B = valueMC.values[1]; //题干 string calSteps = A.ToString(); calSteps += "×"; calSteps += B.ToString(); decimal a = valueMC.valuesRef[0]; decimal b = valueMC.valuesRef[1]; //解题步骤 calSteps += "="; if (valueMC.answer != 99 * A) { calSteps += "Error!"; } calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { valuesCompare valuesRank = new valuesCompare(10, 10, 10); decimal[] valuesTmp = new decimal[10]; int[] iComplements = new int[10]; decimal A = valueMC.values[0]; decimal B = valueMC.values[1]; //题干 string calSteps = A.ToString(); calSteps += "+"; calSteps += B.ToString(); decimal a = valueMC.valuesRef[0]; decimal b = valueMC.valuesRef[1]; //解题步骤 //第一步 calSteps += "=11×("; calSteps += a.ToString(); calSteps += "+"; calSteps += b.ToString(); calSteps += ")"; //第二步 calSteps += "=11×"; decimal a_b = a + b; calSteps += a_b.ToString(); //第三步 calSteps += "="; if (valueMC.answer != 11 * a_b) { calSteps += "Error!"; } calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { valuesCompare valuesRank = new valuesCompare(10, 10, 10); decimal[] valuesTmp = new decimal[10]; int[] iComplements = new int[10]; decimal a = valueMC.values[0]; decimal b = valueMC.values[1]; decimal n = valueMC.valuesRef[0] - valueMC.values[1]; //题干 string calSteps = a.ToString(); calSteps += "+"; calSteps += b.ToString(); //解题步骤 //第一步 calSteps += "=("; calSteps += a.ToString(); calSteps += "-"; calSteps += n.ToString(); calSteps += ")+("; calSteps += b.ToString(); calSteps += "+"; calSteps += n.ToString(); calSteps += ")"; //第二步 calSteps += "="; a = a - n; b = b + n; calSteps += a.ToString(); calSteps += "+"; calSteps += b.ToString(); //第三步 calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { valuesCompare valuesRank = new valuesCompare(10, 10, 10); decimal[] valuesTmp = new decimal[10]; int[] iComs = new int[10]; Random rand = new Random((int)DateTime.Now.Ticks); decimal a = valueMC.values[0]; decimal b = valueMC.values[1]; iComs[0] = iComs[1] = 0; valuesTmp[0] = a; valuesTmp[1] = b; //decimal n = valueMC.valuesRef[0] - valueMC.values[1]; //题干 string calSteps = a.ToString(); calSteps += "+"; calSteps += b.ToString(); //解题步骤 for (int i = 0; i < valueMC.number; i++) { iComs[i] = 1; while (true) { valuesTmp[i] /= 10; if (valuesTmp[i] > 0 && valuesTmp[i] < 10) { break; } else { iComs[i]++; } } valuesTmp[i] = 1; for (i = 0; i < iComs[i]; i++) { valuesTmp[i] *= 10; } } if (valuesTmp[0] > valuesTmp[1]) { valuesTmp[0] = valuesTmp[1]; } else { valuesTmp[1] = valuesTmp[0]; } //第一步 int tmpA = decimal.ToInt32(a) / decimal.ToInt32(valuesTmp[0]); //a的整除部分 int tmpB = decimal.ToInt32(b) / decimal.ToInt32(valuesTmp[1]); //b的整除部分 calSteps += "=("; calSteps += tmpA.ToString(); calSteps += "+"; calSteps += tmpB.ToString(); calSteps += ")×"; calSteps += valuesTmp[0].ToString(); calSteps += "+"; int tmpAR = decimal.ToInt32(a) % decimal.ToInt32(valuesTmp[0]); //a的余数部分 int tmpBR = decimal.ToInt32(b) % decimal.ToInt32(valuesTmp[1]); //b的余数部分 calSteps += "("; calSteps += tmpAR.ToString(); calSteps += "+"; calSteps += tmpBR.ToString(); calSteps += ")"; //第二步 int A_B = (tmpA + tmpB) * decimal.ToInt32(valuesTmp[0]); int A_B_R = tmpAR + tmpBR; calSteps += "="; calSteps += A_B.ToString(); calSteps += "+"; calSteps += A_B_R.ToString(); //第三步 calSteps += "="; if (valueMC.answer != A_B + A_B_R) { calSteps += "Error!"; } calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueMC) { valuesCompare valuesRank = new valuesCompare(10, 10, 10); decimal[] valuesTmp = new decimal[10]; int i, j; //题干 valuesTmp[0] = valueMC.values[0]; string calSteps = valueMC.values[0].ToString(); for (i = 1; i < valueMC.number; i++) { calSteps += "+"; calSteps += valueMC.values[i].ToString(); valuesTmp[i] = valueMC.values[i]; } calSteps += "="; //解题步骤 decimal sumValues = 0; for (i = 0; i < valueMC.number; i++) { sumValues += valueMC.values[i]; } int valueRefInt = (decimal.ToInt32(sumValues) + decimal.ToInt32(valueMC.number) / 2) / decimal.ToInt32(valueMC.number); valuesRank.valueRef = valueRefInt; //valuesRank.valueRef = valueMC.valueRef; //int iGT = 0, iEQ = 0, iLT = 0; for (i = 0; i < valueMC.number; i++) { if (valueMC.values[i] > valuesRank.valueRef) { valuesRank.valuesGT[decimal.ToInt32(valuesRank.numGT++)] = valueMC.values[i]; } else if (valueMC.values[i] == valuesRank.valueRef) { valuesRank.valuesEQ[decimal.ToInt32(valuesRank.numEQ++)] = valueMC.values[i]; } else { valuesRank.valuesLT[decimal.ToInt32(valuesRank.numLT++)] = valueMC.values[i]; } } //第一步 if (valueMC.number != valuesRank.numEQ) { for (j = 0; j < valueMC.number; j++) { calSteps += valuesRank.valueRef.ToString(); if (valueMC.values[j] < valuesRank.valueRef) { calSteps += "-"; decimal error = valuesRank.valueRef - valueMC.values[j]; calSteps += error.ToString(); } else if (valueMC.values[j] > valuesRank.valueRef) { calSteps += "+"; decimal error = valueMC.values[j] - valuesRank.valueRef; calSteps += error.ToString(); } if (j != valueMC.number - 1) { calSteps += "+"; } } } //第二步 calSteps += "="; calSteps += valuesRank.valueRef.ToString(); calSteps += "×"; calSteps += valueMC.number.ToString(); if (valuesRank.numGT != 0) { calSteps += "+("; } decimal tmp; for (j = 0; j < valuesRank.numGT; j++) { tmp = (valuesRank.valuesGT[j] - valuesRank.valueRef); calSteps += tmp.ToString(); if (j != valuesRank.numGT - 1) { calSteps += "+"; } } for (j = 0; j < valuesRank.numLT; j++) { calSteps += "-"; tmp = (valuesRank.valueRef - valuesRank.valuesLT[j]); calSteps += tmp.ToString(); } if (valuesRank.numGT != 0) { calSteps += ")"; } //第三步 calSteps += "="; tmp = valuesRank.valueRef * valueMC.number; calSteps += tmp.ToString(); if (tmp > valueMC.answer) //还有最后一步 { calSteps += "-"; tmp = tmp - valueMC.answer; calSteps += tmp.ToString(); //第四步 calSteps += "="; calSteps += valueMC.answer.ToString(); } else if (tmp < valueMC.answer) { calSteps += "+"; tmp = valueMC.answer - tmp; calSteps += tmp.ToString(); //第四步 calSteps += "="; calSteps += valueMC.answer.ToString(); } calSteps += ",是正确答案。"; return(calSteps); }
private String SolveSteps(valuesStruct valueOrg, valuesStruct valueMC) { valuesCompare valuesRank = new valuesCompare(10, 10, 10); decimal[] valuesTmp = new decimal[10]; int[] iComplements = new int[10]; int i, j; //题干 valuesTmp[0] = valueMC.values[0]; string calSteps = valueMC.values[0].ToString(); for (i = 1; i < valueMC.number; i++) { calSteps += "+"; calSteps += valueMC.values[i].ToString(); valuesTmp[i] = valueMC.values[i]; } calSteps += "="; //解题步骤 //第一步 decimal[] valuesPeek = new decimal[10]; int iPeek = 0; decimal lastValue; int iNum = 0, iNum2 = 0, iTmp = 0; for (j = 0; j < valueMC.number; j++) { bool flagPeek = false; for (i = 0; i < iPeek; i++) { if (valueMC.values[j] == valuesPeek[i]) { flagPeek = true; break; } } if (flagPeek == true) { continue; } //找到相对应的互补数 iNum = j; iComplements[2 * iNum] = valueMC.complementPos[j]; if (iComplements[2 * iNum] == valueMC.number - 1 && valueMC.number % 2 != 0) //最后一个数,且总共的数为奇数个 { lastValue = valueOrg.values[iComplements[2 * iNum]]; continue; } else { if (iComplements[2 * iNum] % 2 == 0) { iComplements[2 * iNum + 1] = iComplements[2 * iNum] + 1; } else { iComplements[2 * iNum + 1] = iComplements[2 * iNum] - 1; } } calSteps += "("; calSteps += valueMC.values[j].ToString(); //互补数A //valuesPeek[iPeek++] = valueMC.values[j]; calSteps += "+"; valuesTmp[iTmp++] = valueMC.values[j]; calSteps += valueOrg.values[iComplements[2 * iNum + 1]].ToString(); //互补数A' valuesPeek[iPeek++] = valueOrg.values[iComplements[2 * iNum + 1]]; calSteps += ")"; valuesTmp[iTmp++] = valueOrg.values[iComplements[2 * iNum + 1]]; iNum2 += 2; if (valueMC.number % 2 == 0) { if (iNum2 < valueMC.number) { calSteps += "+"; } } else { if (iNum2 < valueMC.number - 1) { calSteps += "+"; } } } if (valueMC.number % 2 != 0) { calSteps += "+"; calSteps += valueOrg.values[valueMC.number - 1]; valuesTmp[iTmp++] = valueOrg.values[valueMC.number - 1]; } //第二步 calSteps += "="; for (j = 0; j < valueMC.number / 2; j++) { decimal _tmp = valuesTmp[2 * j] + valuesTmp[2 * j + 1]; calSteps += _tmp.ToString(); if (j != valueMC.number / 2 - 1) { calSteps += "+"; } } if (valueMC.number % 2 != 0) { calSteps += "+"; calSteps += valuesTmp[valueMC.number - 1]; } //第三步 calSteps += "="; calSteps += valueMC.answer.ToString(); calSteps += ",是正确答案。"; return(calSteps); }