从最大到最小的3个整数

2024-05-10

我是 C++ 初学者,我使用《编程:使用 C++ 的原理与实践(第二版)》。问题如下: “编写一个程序,提示用户输入三个整数值,然后以逗号分隔的数字顺序输出这些值。如果两个值相同,则应将它们排列在一起。”

#include <iostream>
#include <sstream>
#include<conio.h>
using std::cout;
using std::cin;

int main()
{
    int one; 
    int to; 
    int tree;
    int big = 0;
    int med = 0;
    int tiny = 0;
    cout << "Please enter 3 integer value:\n";
    cin >> one >> to >> tree; 
    {
        if (one > to && to > tree)
            big == one && med == to && tiny == tree;
        if (one > tree && tree > to)
            big == one && med == tree && tiny == to;
        if (to > one && one > tree)
            big == to && med == one && tiny == tree;
        if (to > tree && tree > one)
            big == to && med == tree && tiny == one;
        if (tree > one && one > to)
            big == tree && med == one && tiny == to;
        if (tree > to && to > one)
            big == tree && med == to && tiny == one;
    }
    cout << "Biggest to smallest: "
    << big << ", " << med << ", " << tiny;
    '\n';
    _getch();
    return 0;
}

当我执行它并输入“1 2 3”时,它返回“0,0,0”。欢迎提供建议、建议或提示。谢谢。 编辑:另外,我还没有考虑做问题的第二部分,因为我无法弄清楚第一部分。


std::sort(如理查德所建议的)是一种解决方案,但恕我直言,对于 3 个元素的数据集来说,这样的重枪并不是必需的。对于 3 个变量,可以展开排序(正如 OP 尝试的那样),并且各种可用的排序算法可能差异很大(关于比较和交换的顺序),或者不会对这个小样本带来任何改进。

因此,我进行了展开排序(重新类似于我认为的冒泡排序):

#include <iostream>

void sort(int &a, int &b, int &c)
{
  if (a < b) std::swap(a, b);
  if (b < c) std::swap(b, c);
  if (a < b) std::swap(a, b);
}

int main()
{
  // any permutation of { 1, 2, 3 } (i.e. any possible order)
  int tests[][3] = {
    { 1, 2, 3 },
    { 1, 3, 2 },
    { 2, 1, 3 },
    { 2, 3, 1 },
    { 3, 1, 2 },
    { 3, 2, 1 }
  };
  // apply sort() to every test set
  for (int *test : tests) {
    int a = test[0], b = test[1], c = test[2];
    std::cout << "a: " << a << " b: " << b << " c: " << c << " sorted: ";
    sort(a, b, c);
    std::cout << "a: " << a << " b: " << b << " c: " << c << '\n';
  }
  // done
  return 0;
}

Output:

a: 1 b: 2 c: 3 sorted: a: 3 b: 2 c: 1
a: 1 b: 3 c: 2 sorted: a: 3 b: 2 c: 1
a: 2 b: 1 c: 3 sorted: a: 3 b: 2 c: 1
a: 2 b: 3 c: 1 sorted: a: 3 b: 2 c: 1
a: 3 b: 1 c: 2 sorted: a: 3 b: 2 c: 1
a: 3 b: 2 c: 1 sorted: a: 3 b: 2 c: 1

coliru 上的现场演示 http://coliru.stacked-crooked.com/a/720eba6d7c471354

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从最大到最小的3个整数 的相关文章

随机推荐