从最大到最小3个整数

时间:2018-07-07 09:10:05

标签: c++

我是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'。欢迎提供建议,技巧或提示。谢谢。 编辑:另外,我还没有考虑做问题的第二部分,因为我无法弄清楚第一部分。

1 个答案:

答案 0 :(得分:1)

std::sort(由Richard提出)是一种解决方案,尽管恕我直言,对于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;
}

输出:

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

Live Demo on coliru