Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }