向量返回/加法算法的问题

Problems with vector return/addition algorithm

本文关键字:算法 问题 返回 向量      更新时间:2023-10-16
vector<int> add_vectors(const vector<int> &first, const vector<int> &second){
vector<int> result;
int length = 0;
int carry = 0;
int firsts_size = first.size();
int seconds_size = second.size();
if (firsts_size >= seconds_size){
int length = firsts_size;
}
else{
int length = seconds_size;
}
for (int i = length - 1; i >= 0; i--){
int digit_sum = first[i] + second[i] + carry;
if (digit_sum > 9){
carry = ((digit_sum / 10) % 10);
}
result.push_back(digit_sum);
}
return result;
}

嘿,伙计们,你们都帮了我好几次了,我希望你们能再次为我做同样的事情。所以C++程序中这个函数的目的是从大数字中提取两个带数字的向量,然后把它们加在一起,最后创建一个向量,用函数返回的和。然而,我对此有一个问题,我不知道这是我实际添加的方式有问题,还是我以某种方式将它们打印出来。

我创建了另一个函数来获取由数字组成的矢量,并将其转换为字符串以打印输出,我知道这个函数很有效,因为它在我的整个程序中都很有效。所以我确信这个功能出了问题,导致我无法打印。然而,VisualStudio并没有从中抛出任何错误或任何东西,只是将输出的位置留空,这让我很困惑。非常感谢您的帮助!!记住一件事,因为这是我班上的第一个程序,所以我不能用任何太高级的东西来解决这个问题。感谢的帮助

我假设向量的位置I与10的(I-1)次方相关。

编辑:现在它也适用于不同大小的矢量

vector<int> add_vectors(const vector<int> &first, const vector<int> &second){
vector<int> result;
int length = 0;
int carry = 0;
int firsts_size = first.size();
int seconds_size = second.size();
int digit_sum = 0;
if (firsts_size >= seconds_size){
length = firsts_size; // int here is not necessary
}
else{
length = seconds_size; // int here is not necessary
}
for (int i = 0, i<lenght; i++){
if (i>=lenght){
if (i>=firsts_size){
digit_sum = second[i] + carry;
}
else{ 
digit_sum = first[i] + carry;
}
}
else{ 
digit_sum = first[i] + second[i] + carry;
}
if (digit_sum > 9){
carry = 1; // carry will be no mor than 1 adding two numbers
digit_sum = digit_sum - 10;
}
else{
carry = 0; 
}
result.push_back(digit_sum);
}
if (carry > 0){
result.push_back(carry);
}
return result;
}