• Status: Solved
• Priority: Medium
• Security: Public
• Views: 3088

# Min Value of Array

I found the below - which gets the max value of an array - but ow do I get the minimum value of the array?
``````int max = intArray[0];    // first element be the max
int i = 0;
for (i = 1; i < intArray.Length; i++)
{
if (intArray[i] > max)
{
// if the elemnt at index  i  is greater than
//previous max , than set this value to the max
max = intArray[i];
} //end of if

}//end of for
``````
0
tbaseflug
• 7
• 4
• 3
• +3
1 Solution

Commented:
Just change condition
if(intArray[i] < max)
0

Billing EngineerCommented:
assuming that this is more for "learning":
Â§ to find the max, the code loops and compares the current item with the current max value, using >
so, to find the min, you have just to change > by < ...
0

Commented:
If you just want to find out the max value and the min value of the array, you can do this:

Array.Sort(intArray);
int max = Int32.Parse(intArray[intArray.Length -1]);
int min = Int32.Parse(intArray[0]);
0

Author Commented:
I am using arrays for the first time - I have the below and when I use the original (above) code (max) it seems to get the max array value - but when switch > to < (above) it does not work

``````        int[] intArray = new int[5];
//IDC10
if (Grd.Contains("ICD10"))
{
_idc10.Enabled = true;
PlaceHolder ph = _idc10.FindControl("phICD10") as PlaceHolder;
intArray[2] = 3;
}
else
{
_idc10.Enabled = false;
}
//ICD9
if (Grd.Contains("ICD9"))
{
_ICD9.Enabled = true;
PlaceHolder ph = _ICD9.FindControl("phICD9") as PlaceHolder;
intArray[1] = 2;
}
else
{
_ICD9.Enabled = false;
}

int max = intArray[0];    // first element be the max
int i = 0;
for (i = 1; i < intArray.Length; i++)
{
if (intArray[i] < max)
{
// if the elemnt at index  i  is greater than
//previous max , than set this value to the max
max = intArray[i];
} //end of if

}//end of for
``````
0

Commented:
Have you tried Array.Sort(intArray) as I suggested?
0

Billing EngineerCommented:
>it does not work
what is the error/problem?
0

Author Commented:
prairedog - it is throwing

The best overloaded method match for 'int.Parse(string)' has some invalid arguments
0

Commented:
Try this:
Array.Sort(intArray);
int max = Int32.Parse(intArray[intArray.Length -1].ToString());
int min = Int32.Parse(intArray[0].ToString());
0

Billing EngineerCommented:
why actually use the Parse and Tostring?
``````Array.Sort(intArray);
int max = intArray[intArray.Length -1];
int min = intArray[0];
``````
0

Author Commented:
I am setting the activetable index to it =  _tabs.ActiveTabIndex = min;  When I set it to the max it sets the index properly, when I set it to min, it does not move
0

Author Commented:
here is all of the cose I am using

``````int[] intArray = new int[5];
//IDC10
if (Grd.Contains("ICD10"))
{
_idc10.Enabled = true;
PlaceHolder ph = _idc10.FindControl("phICD10") as PlaceHolder;
intArray[3] = 3;
}
else
{
_idc10.Enabled = false;
}
//ICD9
if (Grd.Contains("ICD9"))
{
_ICD9.Enabled = true;
PlaceHolder ph = _ICD9.FindControl("phICD9") as PlaceHolder;
intArray[2] = 2;
}
else
{
_ICD9.Enabled = false;
}
//Modifier Lookups
if (Grd.Contains("Modifier"))
{
_mod.Enabled = true;
PlaceHolder ph = _mod.FindControl("phMOD") as PlaceHolder;
intArray[4] = 4;
}
else
{
_mod.Enabled = false;
}
//UB92
if (Grd.Contains("UB92"))
{
_ub92.Enabled = true;
PlaceHolder ph = _ub92.FindControl("phUB92") as PlaceHolder;
intArray[5] = 5;
}
else
{
_ub92.Enabled = false;
}
//Devices
if (Grd.Contains("Device"))
{
_devices.Enabled = true;
PlaceHolder ph = _devices.FindControl("phDevices") as PlaceHolder;
intArray[1] = 1;
}
else
{
_devices.Enabled = false;
}

TabContainer _tabs = Parent.Parent.Parent.Parent.Parent.FindControl("tabs") as TabContainer;

Array.Sort(intArray);
int max = intArray[intArray.Length - 1];
int min = intArray[0];
``````
0

Commented:
angelIII, you are right. No Parse or ToString() is needed here. I was actually trying to correct it while you were posting.
0

Commented:
what version of VS are you using?

If you have VS2008, you can just use...

int max= intArray.Max();
int min = intArray.Min();
0

Author Commented:
I am stuck on VS2005
0

Director of Information TechnologyCommented:
You have this:
int[] intArray = new int[5];

and later:

intArray[5] = 5;

new int[5] means create 5 elements indexed 0-4.  There is no intArray[5].

Also, this is definitely a medical application of some kind, and I'm wondering about your logic here.  A mod is not in the same category as an icd9 or icd10 diagnosis code, and neither are anything at all like a device or ub92 message.
0

Author Commented:
I have never used arrays - what I am trying to do is to set a for each of the load controls that I load - so thought (for lack of correct terminology) - I was setting the array "node" #5 to a value of "5" with intArray[5] = 5;
0

Author Commented:
OK - when using this, the min always returns 0 - the max does as expected and does return the max #

Array.Sort(intArray);
int max = intArray[intArray.Length - 1];
int min = intArray[0];
0

Director of Information TechnologyCommented:
Because if you don't assign a value to an array element that element still exists, and it's value is 0.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.