gpt4 book ai didi

javascript - 两个数组的求和\相加(特殊)

转载 作者:行者123 更新时间:2023-11-29 18:19:16 36 4
gpt4 key购买 nike

“任何长度的正数表示为数字字符数组,因此介于‘0’和‘9’之间。我们知道最重要的密码位于数组索引 0 的位置。

例子: - 号码是 10282 - 数组将是数字 = [1,0,2,8,2]

考虑到这一点,创建一个由 2 个数组组成的函数,表示两个正数,计算它们的 SUM\ADDITION\SUMMATION 并将其设置在第三个数组中,其中包含前 2 个的总和。"

这是从我自己的语言(意大利语)翻译过来的练习。

这是我的解决方案,但并不完全有效。我尝试过基本的东西,比如A=[1,4] 和 B=[4,7]。结果应该是 C=[6,1] 但它给了我 [5,1] 因为它考虑了我使用模块化的行而不是我说 -1 索引位置应该采用++ 的行。

帮助<3

alert('Insert A length');
var k=asknum();
alert('Insert B length');
var h=asknum();
var A = new Array(k);
var B = new Array(h);
// asknum() is only defined in this particular environment we are
// using at the university. I guess the turnaround would be -prompt-

function readVet(vet){//inserts values in index positions
for(i=0;i<vet.length;i++)
vet[i]=asknum();
}


readVet(A);//fills array
readVet(B);//fills array


function sumArray(vet1,vet2){
var C = new Array();
for(i=vet1.length-1;i>(-1);i--){
for(n=vet2.length-1;n>(-1);n--){
C[i]=vet1[i]+vet2[i];
if(C[i]>9){
C[i]=C[i]%10;
C[i-1]=C[i-1]++;
}
}
}
return C;
}

print(sumArray(A,B));

最佳答案

我不确定你在这里用嵌套的 for 循环做什么。你只需要一个。此外,为了使所述循环非常简单,首先对数组进行归一化,以便两者都是较大数组的长度 + 1 个元素(在进位的情况下)。然后在函数退出的途中修正结果。

function normalizeArray(array, digits) {
var zeroCnt = digits - array.length,
zeroes = [];
while (zeroCnt--) {
zeroes.push(0);
}
return zeroes.concat(array);
}

function sumArrays(a1, a2) {
var maxResultLength = Math.max(a1.length, a2.length) + 1;

a1 = normalizeArray(a1, maxResultLength);
a2 = normalizeArray(a2, maxResultLength);
var result = normalizeArray([], maxResultLength);

var i = maxResultLength - 1, // working index
digit = 0, // working result digit
c = 0; // carry (0 or 1)

while (i >= 0) {
digit = a1[i] + a2[i] + c;
if (digit > 9) {
c = 1;
digit -= 10;
} else {
c = 0;
}
result[i--] = digit;
}

/* If there was no carry into the most significant digit, chop off the extra 0 */
/* If the caller gave us arrays with a bunch of leading zeroes, chop those off */
/* but don't be an idiot and slice for every digit like sqykly =D */
for (i = 0 ; i < result.length && result[i] === 0 ; i++) {
/* result = result.slice(1); don't do that, or anything */
}
return result.slice(i);
}

这给出了预期的输出。

关于javascript - 两个数组的求和\相加(特殊),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20372986/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com