How to sort input values

I need the user to enter three numbers, and then I need to make the program write out the smallest numbers.

Example: Inputs USER 16, 3 and 45 the output will be: highest number: 45, average number: 16 and lowest number: 3;

at the moment I have numbers stored in different variables, and use if, else if the instructions are the largest and smallest, but I don’t know how to get the middle number 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 possible?

Do I need the user to enter values ​​into an array, which then I 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(); } } } 

Array sorting, using Selman22 solution! What do I need to enter Console.WriteLine (); only for writing out variables without adding values.

 > 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 very grateful for all the answers, this site is really useful!

EDIT:

 Console.WriteLine(" " + highest + " " + middle + " " + lowestNumber); 

Is there a different way to write the values ​​of variables than by adding "" between them? If i do

 Console.Writeline(highest, middle ,lowestNumber); 

If I say that it says an error, for example, can not convert the highest line to a string, etc.

+5
source share
4 answers

Do I need the user to enter values ​​into an array, which then I need to sort, and then write out the sorted array?

Yes, it would be much easier if you do. Just save the user inputs into an array and 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 expanded if you expect more than three inputs from the user.

+4
source

Try using an array or list to store all of your numbers. Here is an example of how you could do this using Linq to order a 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. 
+2
source

Just to be different, I'm going to provide an answer that does not use an array, so there is a difference from 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; } } 
0
source

Here is another approach using SortedSet<int> that does not contain duplicates. But in any case, it is not necessary to determine the lowest, average 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); 
0
source

Source: https://habr.com/ru/post/1202372/


All Articles