在C ++中以升序打印多个数字

时间:2017-10-19 03:00:11

标签: c++ sorting

所以我在这个项目上工作,我必须从用户那里收集2次整数(循环),每次我必须按升序打印两个整数。限制是你的循环中只能有两个cout语句(一个是要求输入,另一个是输出升序)。

我唯一的问题是,当我考虑升序时,我会这样做(它有两个计数语句):

if (m<n) {
cout << m << n << endl;
if (m>n){
cout << n << m << endl;

到目前为止,这就是我所拥有的:

#include <iostream>
using namespace std;

int main(int,char**) {

int n, m, z;

for (n=0;n<3;n++){

    cout << "Give me two numbers: ";
    cin >> m;
    cin >> z;
    //if (m>z);
    //cout << m << z << "sorted is: " << m << z << endl;
    // This is where I'm getting stuck because I need two count statements to organize in ascending order as shown above
}

}

2 个答案:

答案 0 :(得分:1)

那么您是否考虑过更改哪个变量包含较低的数字? e.g。

cout << m << " " << n << endl;

然后你可以使用一个印刷品

environment.production

答案 1 :(得分:1)

  

这就是我被困的地方,因为我需要两次计算[原文如此]   如上所示按升序组织的陈述

您已将此帖标记为C ++:

需要考虑的其他选项:

使用算法lib:

#include <algorithm>

std::cout << std::min(m,n) << " " << std::max(m,n) << std::endl;

或在你的cout中使用condition / ternary运算符:

std::cout << ((m<n) ? m : n) << " " << ((n<m) ? m : n) << std::endl;

参考文献有时很有趣......但也许这个挑战太微不足道了。

// guess m < n
int& first = m;
int& second = n;

if(!(m<n)) { first = n; second = m; }

std::cout << first << " " << second << std::endl;

指针也可以这样做:

// guess m < n
int&  first = &m;
int& second = &n;

if(!(m<n)) { first = &n; second = &m; }

std::cout << *first << " " << *second << std::endl;

或者您可以使用

  • lambda表达式,或

  • c ++函数,或

  • c ++类方法

但我认为其中每一项都可以直接与第一种替代方案相媲美。