如何解决C++ 向量添加 - 运行时检查失败 #2 - 变量“SUMA_C”周围的堆栈已损坏
我在读大学的第一年,我们被要求制作多个计算器,首先我们使用简单的代码,然后我们开始学习模块,现在我们用向量来做。我的问题是,当我尝试将两个数字(它们是整数)相加并且其结果大于 10 时,它要么直接跳过该位置,例如 8 + 8。它只会保存 1,然后直接到下一个加法删除 6。或者,它跳过下一个加法,例如,如果我做了 8+8 然后 1+1,那么最后一个的结果就会消失。
我声明了一个名为 vector 的新类型,它可以在每个“位置”上存储多达 102 的数字。
const int MAX = 102;
typedef int vector[MAX];
我现在要向您展示的模块所做的是采用两个不同的向量:
第一个 [] 只存储 0 和 1。我用这个位置来知道数字是正数(0)还是负数(1)。
第二个 [] 存储向量的大小,忽略前两个 [] 因为我不使用它们来存储用户输入。
Z[0] [8] [][][][][][][][]
X[0] [8] [][][][][][][][]
我想做的是:
Z[0] [3] [8][8][4]
X[0] [3] [8][8][4]
然后,将每个 [] 的加法分配给相同位置的新向量。但是我们被告知我们只能在每个 [] 上存储从 0 到 9 的数字。这意味着如果我得到的结果 > 10。我将不得不将它分成两部分,以便我可以将每个部分存储在 [] 上。
结果如下:
W[0] [5] [1][6][1][6][8]。
void SUMM(vector Z,vector X,vector W) {
int suma;
AZERO(W);
for (int i = 2; i <= MAX; i++)
{
SUMA_INT(W[i],suma);
SUMA_INT(Z[i],X[i],suma);
if (suma > 9)
{
W[i] = suma / 10;
W[i + 1] = suma % 10;
//i++;
//Z[i - 1] = Z[i - 1] + 1;
}
else
{
W[i] = suma;
}
suma = 0;
} compta_xifres(W);}
SUMA_INT(添加这个,和这个,到这个)
compta_xifres(W) 基本上说明了向量的大小。并将其分配给向量的位置 1:vector[1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。