我试图制作一个复杂的除法计算器。
我有一个double [],我想将前一个数组位置的mod添加到下一个数字的开头。
例如,如果我将1951除以2,我将19和51分成double [],(意思是double [0] = 19和double [1] = 51)并且想要添加19的mod 2到下一个位置的开头,在这种情况下添加" 1"加倍[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()
答案 0 :(得分: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));