Question: I'm a C++ beginner and I was told to make a program to arrange three integers from least to greatest. How did I do?

```
#include <iostream>

using namespace std;

int main()
{
    int x = 0;
    int y = 0;
    int z = 0;
    int first = 0;
    int second = 0;
    int third = 0;
    cout<<"Enter three integers to be arranged from least to greatest.\n";
    cin>>x>>y>>z;

    if(x <= y)
    {
        if(x <= z)
        {
            first = x;
            if(y <= z)
            {
                second = y;
                third = z;
            }
            else
            {
                third = y;
                second = z;
            }
        }
        else
        {
            second = x;
            if(y <= z)
            {
                first = y;
                third = z;
            }
            else
            {
                third = y;
                first = z;
            }
        }
    }
    else
    {
        if(x <= z)
        {
            second = x;
            if (y <= z)
            {
                first = y;
                third = z;
            }
        }
        else
        {
            third = x;
            if ( y <= z)
            {
                first = y;
                second = z;
            }
            else
            {
                second = y;
                first = z;
            }
        }
    }
    cout<<first<<second<<third;
}

```

Answer: 
As other answers nicely clarify other aspects, I will only focus on the sorting part. When you feel ready for it, have a look at the data structures provided by the language libraries. In particular, [`std::multiset`](http://en.cppreference.com/w/cpp/container/multiset) is appropriate here (as it is possible for two or more values to be equal), and it does the dirty work for you.

Example:

```
#include <iostream>
#include <set>

int main()
{
  int x = 0;
  int y = 0;
  int z = 0;
  std::cout << "Enter three integers to be arranged from least to greatest.\n";
  std::cin >> x >> y >> z;

  std::multiset<int> s = { x, y, z };

  for (int elem : s)
    std::cout << elem << " ";
}

```
**Namespace**

`using namespace std;` [is considered bad practice](http://http%20://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice). Short code is not a requirement in C++; clear code is preferred.

**Simplify your code**

Since you are swapping two variables multiple times in the code, it would be nice if you made a function call:

```
swap(int& a, int& b)

```

**Extra variables** 

No need for those first, second, third. It can be done by trick of chain of XOR the target variables twice `a ^= b ^= a ^= b;` to swap them.

Here's the finished code:

```
#include <iostream>
#include <utility>

int main()
{
    int x = 0;
    int y = 0;
    int z = 0;

    std::cout << "Enter three integers to be arranged from least to greatest.\n";
    std::cin >> x >> y >> z;

    if (x > y)  std::swap(x, y);

    if (y > z)  std::swap(y, z);

    if (x > y)  std::swap(x, y);

    std::cout << x << ' ' << y << ' ' << z << '\n';
}

```

My original cryptic XOR swap function, before @5gon12eder suggested using `std::swap`:

```
void swap(int& a, int& b)
{
    a ^= b;
    b ^= a;
    a ^= b;
}

```