Rostam Mahabadi
Rostam Mahabadi

Reputation: 21

print multiple numbers in ascending order in C++

So I'm working on this project where I have to gather 2 integers from a user 3 times (loop), and each time I have to print the two integers in ascending order. The restriction is that you can only have two cout statements within your loop (one is asking for their input and the second is outputting the ascending order).

My only issue with that is, when I think about ascending order, I would do it like (which has two count statements):

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

So far, this is what I have:

#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
}

}

Upvotes: 2

Views: 4887

Answers (2)

2785528
2785528

Reputation: 5566

This is where I'm getting stuck because I need two count[sic] statements to organize in ascending order as shown above

You have marked this post as C++:

Additional options to consider:

use algorithm lib:

#include <algorithm>

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

or use conditional / ternary operator in your cout:

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

References are sometimes fun ... but perhaps this challenge is too trivial.

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

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

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

Pointers can do the same:

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

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

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

or you can use

  • lambda expressions, or

  • c++ functions, or

  • c++ class methods

But I think each of these would be directly comparable to either of the first alternatives.

Upvotes: 1

hahahakebab
hahahakebab

Reputation: 326

So have you considered to change which variable holds the lower number? e.g.

if(m > n){
    int temp = n;
    n = m;
    m = temp;
}

Then you can just use one print

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

Upvotes: 1

Related Questions