【问题标题】:How can I use different computational operations to get the results of two numbers in C++?如何使用不同的计算操作来获得 C++ 中两个数字的结果?
【发布时间】:2021-06-18 14:07:30
【问题描述】:

我正在尝试使用“+”、“-”和 mod“%” 运算符获取两个不同数字的结果。但是,我在编码时遇到了麻烦。我正在使用一个包含如下数字的文本文件:57854879876656543423468 和 654589876578097433579 来编码。请帮忙!我不知道在哪里添加或如何去做。 编辑:非常感谢!

【问题讨论】:

  • 您真的应该考虑使用已经可以自动更改容量的数组:std::vector 或者您是否受到您的要求的限制?
  • 是的,我受到要求的限制
  • 这里是你如何编写一个使用进位从右到左工作的老式方法的添加函数:onlinegdb.com/Z9w5o0YaZ
  • 哇!!谢谢你一百万!

标签: c++ arithmetic-expressions pointer-arithmetic


【解决方案1】:

好的,所以你需要:

  • 编写 3 个函数(add、sub、mod)。理想情况下,您应该将它们放在现有的 print_number() 和 main() 函数之间。
  • 这些函数中的每一个都将使用 3 个数字(2 个操作数和一个结果)。由于您的数字存储为成对的值(指向第一个数字和多个数字的指针),因此这些函数将使用 6 个参数。这就是“add”声明的样子:
void add(short * a, const size_t digits_in_a, short * b, const size_t digits_in_b, short * c, size_t& digits_in_c) {
    // Here you add b and c digit by digit and store the result in c. 
}
  • add 函数的工作方式与小学儿童加数字的方式相同 - 在一个循环中,逐个数字地进行,如果两个数字相加的结果大于 10,则将 1 带入下一次迭代并减去 10从目前的部分结果。您不能忘记通过调用函数 increase_capacity(c, digits_in_c) 在每次迭代中增加结果 (c) 的容量。
  • 子功能类似
  • 在 mod 函数中,如果不需要执行除法,您可以调用 sub(),直到余数为负。
  • 您将在 main() 函数中的行之间调用您的函数
print_number(p_number2, ...);

delete[] p_number1;
  • 在调用函数之前,您需要为结果创建存储空间,例如:
size_t digits_in_result1 = 0, digits_in_result2 = 0, digits_in_result3 = 0;
short * p_result1 = new short[0];
short * p_result2 = new short[0];
short * p_result3 = new short[0];

  • 您可能希望通过调用 print_number() 来打印结果。
  • 不要忘记最后删除结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2019-04-26
    • 2019-11-13
    相关资源
    最近更新 更多