 # Finding larger and smaller numbers in c

Guys, please help me understand why comparing the first index of the input to the rest of the inputs can give you the larger and smaller number.

I am struggling to grasp the idea.

Here is the code:

``````#include <stdio.h>
#include <stdbool.h>

#define MAX 10
int main(){

int num[MAX];
int n, a, b, smallest=0, largest=0;

for(int i=0; i < sizeof(num)/sizeof(num); i++) {
printf("Enter a number: ");
scanf("%d", &num[i]);
}

largest = num;
smallest = num;

for(int i=0; i < sizeof(num)/sizeof(num); i++) {
if(num[i] > largest) {
largest=num[i];
}
if(num[i] < smallest) {
smallest=num[i];
}
}

printf("Smallest: %d", smallest);
printf("\nLargest: %d", largest);

return 0;
}``````

The `num` is array with numbers, so `num` is the first number. Then it’s one-by-one compared to other numbers, and if any of them is smaller or larger, then that value is replaced by another number.

2 Likes

You are not comparing the first value, you are comparing all values “starting” with the first.
You start with the first because you need to make sure, that smallest/largest are numbers actually present in the array.

Imagine you have both initialized with 0, but the array is [1,2,3,4,5] → suddenly “smallest” would still have the initial value of 0, despite the array not having any 0.

1 Like

Ohh I think I get it now. Thank you

Thank you for this explanation. Still trying to absorb this.

Hello,

I think to get correct results it is safe to initiate smallest and largest variables with the first element of an array.
like this,

``````
int smallest = num;
int largest = num;
``````

Okay, I will do it next time.

That’s already happening in the code.
Except largest/smalles are initialized at the beginning of the program and then overwritten with num after the input.

It’s common practice to create all variables at the start, that are used throughout the program.