• C

# Urgent!!! Can't find the problem...

I wrote a program to find the bigger and the smaller number in a list but there's something wrong and don't know what it is becuse the program just gives me the biggest number while in the smaller number always appear 0.  Thanks for your help!!!
Here it is:

#include <stdio.h>

void main()
{
int arr[10], n, dat, max=0, min=0;
for(n=0;n<=9;n++)
{
printf("Number: ");
scanf("%d",&dat);
if(dat>max)max=dat;
if(dat<min)min=dat;
}
printf("Bigger %d Smaller %d",max,min);
}
###### Who is Participating?

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Commented:
for(n=0;n<=9;n++)
{
printf("Number: ");
scanf("%d",&dat);

if (n == 0) min = dat;

if(dat>max)max=dat;

if(dat<min)min=dat;
}
printf("Bigger %d Smaller %d",max,min);

Experts Exchange Solution brought to you by

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Author Commented:
>>if (n == 0) min = dat;

Please could you explain me what this line does?
Commented:
You should initialize min to INT_MAX instead of 0
You should initialize max to INT_MIN instead of 0

They defined in <limits.h>

Commented:
> Please could you explain me what this line does?

basically, your min starts out at 0... if all the numbers in the array are positive, min will always be 0.

what the line above does is it sets min to the first element in the array... if the first element is the min then it stays the min, otherwise it'll keep going through and update min accordingly (note that if (n==0) will only happen once)
DBACommented:

Using the code in the original question, a small change (similar to bobbit31's) should do just fine:

#include <stdio.h>

void main()
{
int arr[10], n, dat, min, max;

min = arr[0];                /*  Default min to the first value  */
max = arr[0];               /*  Default max to the first value  */
for(n=1;n<=9;n++)      /*  Search the rest of the list  */
{
printf("Number: ");
scanf("%d",&dat);
if(dat>max)max=dat;
if(dat<min)min=dat;
}
printf("Bigger %d Smaller %d",max,min);
}

Kent
Commented:
gothic130 your algrythm will work if you just change the initialization as above.
It would also allow you to enter negative numbers.
Author Commented:
Thank you all:)
###### It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C

From novice to tech pro — start learning today.