【问题标题】:Addition and subtraction of arrays数组的加法和减法
【发布时间】:2014-10-30 00:13:27
【问题描述】:

我整天都在做这件事,但无法正确输出。 我想要做的是输入两个数字,这将被推入两个数组,以便我们可以减去或添加它们并显示结果。看起来很简单,但抓住的地方很少

  1. 输入必须从用户一个一个推入数组。
  2. 如果我没有输入值,代码应该假定它是'0''null''0' 如果在开头,'null' 如果在结尾。例如,如果第一个数字是234,第二个数字是23,那么代码应该输入'023',如果我输入第一个数字为2,第二个数字为3,但不要在end 那么代码应该假定它是null

问题

  1. 如果总和大于10,我不能将“carry”带到下一组。这意味着我得到的值只是两个数字的加法,它是否大于 10 并不重要。例如添加234890 给我[10, 12, 4]

这是代码.....

#include<iostream>
using namespace std;

main() {
    int first[10], second[10], result[10], c, n;

    cout << "Enter the number of elements in the array ";
    cin >> n;
    if (n > 10 || n < 0) {
        std::cout << "invalid number, you are a bad reader" << endl;
        system("PAUSE");
        return 0;
    }

    cout << "Enter elements of first array " << endl;

    for (c = 0; c < n; c++) {
        cin >> first[c];
        if (first[c] > 9 || first[c] < 0) {
            std::cout << "invalid number, you are a bad reader" << endl;
            system("PAUSE");
            return 0;
        }

    }
    cout << "Enter elements of second array " << endl;

    for (c = 0; c < n; c++)
        cin >> second[c];

    cout << "Sum of elements of two arrays " << endl;

    for (c = 0; c < n; c++)
        cout << first[c] + second[c] << endl;

    if ((first[c] + second[c]) > 9) {
        cout << "overflow" << endl;
    }

    //result[c] = first[c] + second [c];
    //cout << result[c] <<endl;
    system("PAUSE");
    return 0;
}

我非常感谢一些建议。

【问题讨论】:

  • 我不明白关于不输入值的部分。
  • 这意味着当程序要求我输入一个值并且我没有输入任何内容并且只需按 Enter 键时,它应该假定它为 0 或 null。很抱歉造成混乱
  • 提示:您可以使用[c - 1] 帮助处理进位
  • int 不能为空。
  • @nothing 你是新加坡国立大学的吗?如果是,请告诉我。我当然可以帮助你。

标签: c++ arrays addition


【解决方案1】:

如果您的意图是获得例如的结果

234 + 890 = 1124

那么你的求和循环应该是相反的顺序。 (由于您正在从提示中读取数组元素的数量,因此您可以使用此信息按照以下求和循环的首选顺序将第一个/第二个数字输入每个数组。)

例如,对于进位问题,您需要设置一个变量并在循环中使用它,例如。

int sum[10] = {0};
int c;

int carry = 0;
for (c = 0; c < n; c++)
{
    sum[c] = first[c] + second[c] + carry;
    carry = sum[c] / 10;
}
if (c < n)
    sum[c] = carry;
else
    cout << "overflow";

【讨论】:

    【解决方案2】:

    使用 std::vector 并学习如何使用反向迭代器。所以如果有人输入 234 你 push_back(2), push_back(3), push_back(4) 并且有 [0]=2,[1]=3,[2]=4。那么如果下一个数字是 23,那么你有 [0]=2,[1]=3。现在使用反向迭代器遍历两个向量,因此对 rbegin() 的第一次调用将给出指向 [2]=4 的指针,而另一个向量将给出 [1]=3。现在使用 push_back 添加和进位到第三个向量来存储结果。使用反向迭代器输出结果以打印结果。

    这看起来像家庭作业,所以没有示例代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2019-08-27
      • 1970-01-01
      • 2012-06-12
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多