Tutorials
Examples
Tests

# C++ Program to Find Second Largest Element in an Array

This article provides programs in C++ to find and print the second largest element of an array entered by user. The program is created using both for and while loop.

## Find Second Largest Element using for Loop

The question is, write a C++ program to find and print second largest element in given array. The program given below is its answer:

```#include<iostream>

using namespace std;
int main()
{
int i, arr[10], large, slarge;
cout<<"Enter 10 Array Elements: ";
for(i=0; i<10; i++)
cin>>arr[i];
large = arr[0];
for(i=0; i<10; i++)
{
if(large<arr[i])
large = arr[i];
}
slarge = arr[0];
for(i=0; i<10; i++)
{
if(slarge<arr[i])
{
if(arr[i]!=large)
slarge = arr[i];
}
}
cout<<"\nSecond Largest Element = "<<slarge;
cout<<endl;
return 0;
}```

The snapshot given below shows the initial output produced by above C++ program on finding and printing the second largest element from given array:

Now supply the input say 1, 10, 2, 9, 3, 8, 4, 7, 5, 6 as ten elements and press `ENTER` key to find and print the second largest element from given array like shown in the snapshot given below:

In above program,

• I've supposed the very first element as the largest one.
• That is, the first element or element at 0th index gets initialized to large.
• Now using the value of large, I've checked with each and every elements of the array
• While checking, if the value of large is found to be lesser than any element, then I've initialized that element as the new value of large
• In this way, the largest element gets stored in large
• Now again I've supposed that the very first element as the second largest element. That is, slarge holds the value this time
• Now again, I've does the same job of comparing the value of slarge with each and every elements of the array
• But this time, if the value in slarge is found to be lesser, then the element gets initialized as the new value of slarge only when the element is not equal to large
• In this way, the second largest element gets find out and stored in slarge variable
• Therefore after exiting from the loop, just print the value of slarge as second largest element of the array

Now the question is, what if user doesn't wants to enter 10 elements? That is, what if user wants to enter some n elements and based on those n elements, he/she wants to find the second largest element. So we've to modify the program.

Therefore let's modify the above program and create another program that allows user to define the size of array too along with its elements of given size like shown in the program given below:

```#include<iostream>

using namespace std;
int main()
{
int tot, i, arr[100], large, slarge;
cout<<"Enter the Size of Array: ";
cin>>tot;
cout<<"Enter "<<tot<<" Array Elements: ";
for(i=0; i<tot; i++)
cin>>arr[i];
large = arr[0];
for(i=0; i<tot; i++)
{
if(large<arr[i])
large = arr[i];
}
slarge = arr[0];
for(i=0; i<tot; i++)
{
if(slarge<arr[i])
{
if(arr[i]!=large)
slarge = arr[i];
}
}
cout<<"\nSecond Largest Element = "<<slarge;
cout<<endl;
return 0;
}```

Here is its sample run with user input 5 as size and 1, 5, 2, 4, 4 as five elements:

## Find Second Largest Element using while Loop

This program is almost similar to previous program, except its approach. This program is created using while loop. Rest of the things are exactly same as of previous program.

```#include<iostream>

using namespace std;
int main()
{
int tot, i=0, arr[10], large, slarge;
cout<<"Enter the Size of Array: ";
cin>>tot;
cout<<"Enter "<<tot<<" Array Elements: ";
while(i<tot)
{
cin>>arr[i];
i++;
}
large = arr[0];
i=0;
while(i<tot)
{
if(large<arr[i])
large = arr[i];
i++;
}
slarge = arr[0];
i=0;
while(i<tot)
{
if(slarge<arr[i])
{
if(arr[i]!=large)
slarge = arr[i];
}
i++;
}
cout<<"\nSecond Largest Element = "<<slarge;
cout<<endl;
return 0;
}```

This program does exactly the same job as of previous program.

C++ Online Test

« Previous Program Next Program »