Reputation: 1350
The program first asks the user for the number of elements to be stored in the array, then asks for the numbers.
This is my code
static void Main(string[] args)
{
Console.Write("How many numbers do you want to store in array: ");
int n = Convert.ToInt32(Console.ReadLine());
int[] numbers = new int[n];
int min = numbers[0];
int max = numbers[0];
for (int i = 0; i < n; i++)
{
Console.Write("Enter number {0}: ", i+1);
numbers[i] = Convert.ToInt32(Console.ReadLine());
}
for (int i = 0; i < n; i++)
{
if (min > numbers[i]) min = numbers[i];
if (max < numbers[i]) max = numbers[i];
}
Console.WriteLine("The minimum is: {0}", min);
Console.WriteLine("The maximum is: {0}", max);
Console.ReadKey();
}
}
}
But minimum value is always 0, why is that?
Upvotes: 8
Views: 72120
Reputation: 23
This code will help you in very simple way without adding any loops and conditions
int[] arr={1,1,2,4,5,1,2,1};
Array.Sort(arr);
Console.WriteLine("Min no: "+arr[0]);
Console.WriteLine("Max no: "+arr[arr.Length-1]);
Upvotes: 2
Reputation: 1
for (int i = 0; i < vector.GetLength(0); i++)
{
if (i == 0)
{
VectorMinMax[1]= vector[i];
VectorMinMax[0]= vector[i];
}
else {
if (VectorMinMax[1] > vector[i]) VectorMinMax[1] = vector[i];
if (VectorMinMax[0] < vector[i]) VectorMinMax[0] = vector[i];
}
}
Upvotes: 0
Reputation: 98868
Besides on your problem, you can use Enumerable.Min
and Enumerable.Max
methods like;
int[] numbers = new int[]{1, 2, 3 ,4};
Console.WriteLine(numbers.Min()); //1
Console.WriteLine(numbers.Max()); //4
Don't forget to add System.Linq
namespace.
Upvotes: 21
Reputation: 30728
You are initializing min
to 0.
Try following
int min = Int32.MaxValue;
Also In case you are accepting negative values as input, you should initialize max to minimum integer value.
int max = Int32.MinValue;
Upvotes: 2
Reputation: 50214
Your issue is that you're initializing min
and max
to numbers[0]
before numbers is populated, so they're both getting set to zero. This is wrong both for min
(in case all your numbers are positive) and for max
(in case all your numbers are negative).
If you move the block
int min = numbers[0];
int max = numbers[0];
to after the block
for (int i = 0; i < n; i++)
{
Console.Write("Enter number {0}: ", i+1);
numbers[i] = Convert.ToInt32(Console.ReadLine());
}
then min
and max
will both be initialized to the first input number, which is fine. In fact you can then restrict your for
loop to just check the subsequent numbers:
for (int i = 1; i < n; i++)
....
Just make sure the user's value of n
is greater than zero!
Upvotes: 7