Reputation: 61
I need a user to input three numbers and then i need to make the program write out the largest to smallest numbers.
example: USER inputs 16, 3 and 45 output would be: Largest number is: 45, middle number is: 16 and smallest number is: 3;
at the moment i have the numbers stored in different variables and use if, else if statements to get the biggest and smallest, but I dont know how to get the middle number out with else if.
if (number1 <= number2
&& number1 >= number3 & number1 <= number3
&& number1 >= number2)
{
middle = number1;
}
else if (number2 <= number1
&& number2 >= number3 & number2 <= number3
&& number2 >= number1)
{
middle = number2;
}
else if (number3 <= number1
&& number3 >= number2 & number3 <= number2
&& number3 >= number1)
{
middle = number3;
}
Is it even possible?
Do I need to make the user input the values into an Array which I then need to sort and then write out the sorted array?
EDIT:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Practise
{
class Practise
{
static void Main(string[] args)
{
int[] newArray = new int[3];
for (int i = 0; i < newArray.Length; i++)
{
newArray[i] = Convert.ToInt32(Console.ReadLine());
}
Array.Sort(newArray);
int lowestNumber = newArray[0];
int middle = newArray[1];
int highest = newArray[2];
Console.WriteLine("How can i only type out variables?" + highest + How can i only type out variables?" + middle + "How can i only type out variables?" + lowestNumber);
Console.ReadLine();
}
}
}
The Array sort worked, used Selman22's solution! What do I need to type in the Console.WriteLine(); only to write out variables without the values being added.
> example: highest = 15 middle = 10 lowestNumber = 5
> Console.WriteLine(highest + middle + lowestNumber); would do 15 + 10
> + 5 = 30. If i put "text" in between they obviously does not add up but what do I type to only get values out?
I am really thankful for all answers, this site is really helpful!
EDIT:
Console.WriteLine(" " + highest + " " + middle + " " + lowestNumber);
Is there any other way of writing out the values of the variables than by adding " " in between? If i do
Console.Writeline(highest, middle ,lowestNumber);
If i put that it says an error like cant convert highest into string etc..
Upvotes: 5
Views: 6708
Reputation: 460098
Here is another approach using a SortedSet<int>
which does not contain duplicates. But that is not necessary anyway to determine the lowest, middle and maximum number:
var numbers = new SortedSet<int>();
numbers.Add(16); numbers.Add(3); numbers.Add(45);
Console.WriteLine(" {0} {1} {2}",
numbers.Max,
numbers.ElementAt(1),// use numbers.Count/2 instead of 1 to determine the middle progr.
numbers.Min);
Upvotes: 0
Reputation: 6684
Just to be different, I'm going to supply an answer that does not use an array so that there's some contrast with using an array. Also to answer the question "is it possible" (yes, yes it is).
int minimum, middle, maximum; // Use whatever numerical type is appropriate here.
if( number1 < number2 )
{
if( number2 < number3 )
{
minimum = number1;
middle = number2;
maximum = number3;
}
else if( number1 < number3 )
{
minimum = number1;
middle = number3;
maximum = number2;
}
else
{
minimum = number3;
middle = number1;
maximum = number2;
}
}
else
{
if( number1 < number3 )
{
minimum = number2;
middle = number1;
maximum = number3;
}
else if( number2 < number3 )
{
minimum = number2;
middle = number3;
maximum = number1;
}
else
{
minimum = number3;
middle = number2;
maximum = number1;
}
}
Upvotes: 0
Reputation: 24395
Try using an array or a list to store all your numbers. Here's an example of how you could do it using Linq to order the list.
var myNumbers = new List<int>();
myNumbers.Add(45);
myNumbers.Add(14);
myNumbers.Add(30);
//etc
var sortedList = myNumbers.OrderBy(x => x).ToList();
//sortedList now contains a list of numbers in order from large to small.
var middleNumber = sortedList[1]; //get the second entry.
Upvotes: 2
Reputation: 101681
Do I need to make the user input the values into an Array which I then need to sort and then write out the sorted array?
Yes, it would be much much simpler if you do that.Just store the user inputs into an array then sort it
var numbers = new int[] { number1, number2, number3 };
Array.Sort(numbers);
int lowestNumber = numbers[0];
int middle = numbers[1];
int highest = numbers[2];
This can easily be extended if you expect more than three inputs from the user.
Upvotes: 4