【问题标题】:I need help completing this program我需要帮助来完成这个程序
【发布时间】:2020-05-08 22:04:51
【问题描述】:

这些是我的程序的要求。编写一个程序,找出两个整数和三个整数的最小值、最大值和总和。对 min、max 和 sum 中的每一个使用 1 个重载函数。我已经完成了大部分工作,但不知道如何添加重载函数。这是我的代码

#include <iostream>
using namespace std;
int main(){

   int num1, num2;

   cout<<"Enter first number: ";

   cin>>num1;

   cout<<"Enter second number: ";
   cin>>num2;
   cout<<"Sum of " << num1<< " and " <<num2<<"  is: "<<(num1+num2)<<endl;

   if (num1>num2)
   {
   cout << "The max is " << num1<< " and the min is " << num2<< endl;
   }
   else
   {
       cout<< num2 << " is the max, and " <<num1 <<" is the min"<<endl;
   }
   return 0;
}

【问题讨论】:

  • 我认为重载意味着实现int min(int, int)int min(int, int, int),同样适用于maxsum
  • 没错!我正要写那个:) 重载函数具有不同的实现,但名称相同,但形式参数的组合不同,因此您可以使用@BradyDean 建议的内容,并且对函数的每次调用都命名相同。不需要例如。 min2 和 min3 不同的名称。此外,您可以使用不同的类型对其进行重载,例如:min(float, float),但现在他们只询问整数。顺便说一句:你还没有在你的代码中创建任何函数,但 main ......你需要关于如何编写函数的帮助吗?
  • 那么我会在哪里将它合并到我的代码中呢?我只是不知道从这里去哪里。

标签: c++


【解决方案1】:

这里的想法是将代码分成函数,更具体地说,分成两个不同的函数,具有相同的名称,但具有不同的参数(这意味着这个函数有不同的签名,这就是编译器区分一个函数和另一个函数的方式!)。

代码应该是这样的:

int add(int a, int b)
{
    return a + b;
}

int add(int a, int b, int c)
{
    return a + b + c;
}

int max(int a, int b)
{
    return (a > b) ? a : b;
}

int max(int a, int b, int c)
{
    return max(a, max(b, c));
}

注意这个小“技巧”​​(推荐),我在 3 参数 max 中使用了 2 参数 max,而不是重新实现相同的逻辑两次。这样,如果你有一个bug,你就会在两个都有一个bug,但是如果你修复它,它会同时在两个中修复。许多其他类型的函数也是如此!

另外,表示(expression) ? (value_1) : (value_2),它是if赋值的简写形式,可用于赋值变量返回值,常用。

P.S您可以通过这种方式为任意数量的参数以及具有 operator&lt; 的任何类型(尽管它确实包含问题,如果参数不是来自同一类型!),使用:

template <typename T>
T max(T a, T b)
{
    return (a > b) ? a : b;
}

template <typename T, typename... Ts>
T max(T a, Ts... others)
{
    const T max_of_others = max(others...);
    return (a > max_of_others) ? a : max_of_others;
}

int main()
{
    std::cout << "max of 1-6 is: " << max(1, 6, 3, 4, 5, 2) << std::endl;
}

但这里有点矫枉过正! (很高兴知道未来!)

【讨论】:

  • @SarahBaig 很高兴为您提供帮助!如果它关闭这个线程,请,除了答案(使用 V 符号)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2012-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多