【发布时间】:2024-01-13 07:07:01
【问题描述】:
我想使用数组计算两个数字之间的差异(比如说v 和n,所以v-n)(不要问我为什么必须这样做)。每个数字的数组按以下方式制作:
- 它们的容量是
v和n之间最大数的位数(代码中=q) -
vArray[i]=iv的第一个数字,除了前导零填充整个数组 -
nArray[i]= -in的第一个数字,除了前导零填充整个数组
例如,选择v = 10 和n = 2,
vArray = [1,0]
nArray = [0,-2]
所以我写了这段代码来计算sum数组,它将等于差的数字(sum = [0,9]为上面的例子):
long r = 0;
for (int i = q-1 ; i > -1; i--){
sum[i] = vArray[i] + nArray[i];
if (sum[i] < 0){
r = floor(sum[i]/10);
sum[i-1] -= r;
sum[i] = sum[i]+10;
}else{
r = 0;
}
NSLog(@"%li",sum[i]);
}
问题在于 sum 数组不等于应有的值。同样的例子,sum = [1,8]代码有什么问题?
注意:vArray 和 nArray 已正确生成。
编辑:一些示例和预期结果
v = | n = | vArray = | nArray= | sum=
25 | 9 | [2,5] | [0,9] | [1,6]
105 | 10 | [1,0,5] | [0,1,0] | [0,9,5]
1956 | 132 | [1,9,5,6] | [0,1,3,2] | [1,8,2,4]
369375 | 6593 |[3,6,9,3,7,5]| [0,0,6,5,9,3] |[3,6,2,7,8,2]
【问题讨论】:
-
会不会是整数除法:
sum[i]/10?请记住,1/2 == 0。 -
那我应该写什么呢?
-
我不明白你的帖子。每个数组元素是一位还是一位以上?
q代表什么? -
“不要问我为什么要这样做” - 对不起,但那几乎是一个先决条件。