【问题标题】:Use Min Max in C++ for more than 4 variables without using array在 C++ 中对超过 4 个变量使用 Min Max 而不使用数组
【发布时间】:2020-02-12 20:48:56
【问题描述】:

我刚接触 C++ 有几天了。我有一个关于最小值/最大值的作业,我必须在不使用数组的情况下找到 4 个变量的最小值和最大值。你们能帮我解决这个问题吗?

【问题讨论】:

  • 创建一个变量作为前两个变量的最小值/最大值,另一个作为后两个变量的最小值/最大值,然后将第三个变量作为这两个计算变量的最小值/最大值。
  • 4个变量都是同一类型吗?
  • 题头与内容不符。您是否正好有 4 个变量,或者您询问的是标题中所述的“超过 4 个”?
  • 大多数问题给人的印象是盲目的家庭作业垃圾,这个问题太宽泛了,无法回答。它缺乏一些自己努力的必要证明。要解决这个问题,请看这里。 meta.stackoverflow.com/questions/334822/…如果您按照此处所述的妥协方式尽自己的一份力量,它将解决我所描述的问题。
  • Duc Nguyen,也看看这里,stackoverflow.com/help/how-to-ask 尤其是以“发布问题并回复反馈”开头的部分。这里的人可能会对“这是我的作业,明天我会找到解决方案,到时见”的印象感到恼火。

标签: c++ arrays max min


【解决方案1】:

如果您可以使用 C++11,则可以通过使用 initializer_list 来使用此表示法。

std::min({var1, var2, var3, var4});

这种表示法在没有c++11环境的情况下也可以实现几乎相同的功能。

std::min(std::min(var1, var2), std::min(var3, var4));

std::max 也一样。

【讨论】:

    【解决方案2】:

    从 C++11 开始,std::minstd::max 的标准算法可以采用初始化列表。所以只需传递所有 4 个变量。

    #include <algorithm>
    
    auto low = std::min( {v1, v2, v3, v4} );
    auto high = std::max( {v1, v2, v3, v4} );
    

    (或者在一个声明中使用std::minmax

    【讨论】:

      【解决方案3】:

      您可以根据自己的要求使用条件找出最小值和最大值。

      #include <iostream>
      using namespace std;
      int main()
      {
          int a, b, c, d , max, min;
          cout << "Enter first number: ";
          cin >> a;
          cout << "Enter first number: ";
          cin >> b;
          cout << "Enter first number: ";
          cin >> c;
          cout << "Enter first number: ";
          cin >> d;
      
          if ( a > b && a > c && a > d) {
              max = a;
          }
          else if (b > a && b > c && b > d) {
              max = b;
          }
          else if (c > a && c > b && c > d) {
              max = c;
          }
          else if (d > a && d > b && d > c) {
              max = d;
          }
          if (a < b && a < c && a < d) {
              min = a;
          }
          else if (b < a && b < c && b < d) {
              max = b;
          }
          else if (c < a && c < b && c < d) {
              min = c;
          }
          else if (d < a && d < b && d < c) {
              min = d;
          }
      
          cout << "Maximum is " << max<<endl;
          cout << "Minimum is " << min;
      
      }
      

      为了找到数字的最小值和最大值, 您可以使用可以将每个变量与其他变量进行比较的使用条件。就像如果第一个数字“a”大于第二个数字“b”,第一个数字“a”也大于第三个数字“c”并且第一个数字“a”大于第四个数字“d”因此第一个数字“a” " 是您的最大数量。如果此条件失败,则您应该比较其他数字。 寻找最小值也是如此。希望这个解释有帮助

      【讨论】:

      • 这段代码非常复杂。而且输入4次第一个数字也有点奇怪(你好不小心复制/粘贴)。
      • 作为“可改进”(四次“第一”,真的......),它可能是唯一通过教师“它似乎是从 StackOverflow 复制”检查的答案,如果他们不要真的来这里。对于“编程 101 类”,其他答案有点偏离。
      • @Jabberwocky 关于四个“第一”,您是对的。但是很纠结?来吧,我很少见过更直接的代码。也许太直了,但不复杂。
      • @Yunnosch 有这么多的 if 和 else if 和条件,您很容易出现诸如 c &lt; a 而不是 c &lt; b 之类的错字,这可能会被忽视,尤其是在没有大量测试的情况下。乍一看,我并不清楚是否真的涵盖了所有案例。
      • @Jabberwocky Point 已接受。我真的同意。然而,这种“可维护性”和“鲁棒性”(在我的职业生涯中非常重要的事情)远远超出了“初学者编程”课程的明显受众。不过,我和你一起早点教这些东西。所以,是的。我现在完全支持你。
      猜你喜欢
      • 2010-12-10
      • 2015-11-15
      • 1970-01-01
      • 2015-02-18
      • 2018-05-14
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多