Three Integers from Least to Greatest
Nov 27, 2013 at 8:19am UTC
I thought i was off to a good start but the minToMax function only sorts the first to variables. What am i missing?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#include <iostream>
using namespace std;
void minToMax(int &num1, int &num2, int &num3); // rearrange from small to large
int main()
{
int num1;
int num2;
int num3;
cout << "Enter 3 Numbers:\n" ;
cin >> num1;
cin >> num2;
cin >> num3;
minToMax(num1,num2,num3);
cout << "Those three numbers from smallest to greatest are: "
<< num1 << ", "
<< num2 << ", "
<< num3 << endl << endl;
return 0;
}
void minToMax(int &num1, int &num2, int &num3)
{
if (num1 > num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
}
Last edited on Nov 27, 2013 at 8:27am UTC
Nov 27, 2013 at 8:42am UTC
the minToMax function only sorts the first two variables
Indeed.
You have ensured that num1 <= num2.
Now you could do similar operation to ensure that num1 <= num3.
After these two we do know that num1 has the smallest element.
What remains is to ensure that num2 <= num3.
In other words: you do only the first of three steps.
Nov 27, 2013 at 9:04am UTC
It only sorts the first 2 because that is all you asked it to do. There is nothing in
void minToMax()
that alters
num3
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
void minToMax(int &num1, int &num2, int &num3)
{
if (num1 > num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
}
else
;
if (num2 > num 3)
{
int temp = num2;
num2 = num3;
num3 = temp;
}
else
;
}
To be honest, I think this would look better as a while loop, like so:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
void minToMax(int &num1, int &num2, int &num3)
{
while ((num1 > num2) && (num1 > num3) && (num2 > num3))
int temp;
if (num2 < num1)
{
temp = num2;
num2 = num1;
num1 = temp;
}
else
{
temp = num2;
num2 = num3;
num3 = temp;
}
}
Nov 27, 2013 at 9:09am UTC
Thank you guys so much for the help
Topic archived. No new replies allowed.