0

我正在尝试制作一个复杂的除法计算器。

我有一个 double[],我想将前一个数组位置的 mod 添加到下一个数字的开头。

例如,如果我要将 1951 除以 2,我将 19 和 51 拆分为 double[],(意思是 double[0] = 19 和 double[1] = 51)并希望将 19 的 mod 与 2 相加下一个位置的开始,在这种情况下,将“1”添加到 double[1] 并使其等于 151 以继续。与上述示例匹配的示例代码。

    static double[] number = new double[2];
    static int toDiv;    

    static void Main(string[] args)
    {

        ///TESTING ONLY
        number[0] = 19;
        number[1] = 51;

    }//end of main

    void Calculate()
    {
            for (int i= 0; i<number.Length; i++)
            {

                if (number[i] % numsToDiv[0] == 0)
                {//if the program gets in here, % = 0

                    if (i - 1 == number.Length)
                    {
                        return false;
                    }//end of if (i-1==number.Length)
                    else
                    {
                        toDiv = (int)number[i] % numsToDiv[0];

                    }//end of else
                }//end of if
            }//end of "i" for
    }//end of Calculate()
4

1 回答 1

0

让我们首先创建一个函数,该函数返回将分子一分为二所需的 0,并找到要添加的 0 以放置下一个数字的 mod 值

int zeroPlaceHolder(ZerosNeeded){
    int zeros = 1;
    for(int i = 0; i < ZerosNeeded;i++)
       zeros *= 10;
    return zeros;
}

找到分子中数字的长度我会通过将分子更改为字符串然后找到字符串的长度来解决这个问题

int numerator = 1951;
int denominator = 2;
//this is a convetion used in programming so am assuming C# has this too
int len = numerator.toString().length;

使用数字的一半 0 将分子拆分为 2,这将为我们提供拆分的两个部分

int divider = zeroPlaceHolder(len/2); 
//the first part can be found by
number[0] = numerator/divider;
//second part
number[1] = numerator%divider;
//find the number needed to shift the mod of previous to first digit of next
len = number[1].toString().length;
divider = zeroPlaceHolder(len);
//shift the mod of the 1st number(number[0])/denominator to the right
number[1] = number[1] + (divider * (number[0]%denominator));
于 2016-05-08T11:17:28.437 回答