An array of 100 elements has been initialized to random numb
An array of 100 elements has been initialized to random numbers from 1 to 200. The program uses the following function with this prototype:
void two_largest(int[], int, int*, int*, int*, int*);
Set up a do/while loop which will be repeated until a -1 is entered from the user. Call the function two_largest to find the two largest elements in the array and their subscripts (ifthere are two equal largest elements, detect both - they are the solution to the problem). This function must leave the original array unchanged (the array can\'t be sorted). The function must return the largest elements and their subscripts using the pointers in the parameter list. Display the largest elements with subscripts in the main.
Solution
C++ program to get the two largest numbers in an array with index
#include<iostream>
using namespace std;
void two_largest(int [],int,int*,int*,int*,int*); // function prototype
int main()
{
int array[100],count = 0,Large1,Large2,index1,index2; // variable decleration
cout << \"Enter numbers from 1 to 200, Maximum 100 numbers\" << endl; // instruct the user to enter numbers
cout << \"To stop entering enter -1\" << endl;
do // do while loop to get numbers from user
{
cin >> array[count];// taking input
count ++;
}while(count < 100 && array[count-1] != -1); // loop til user enters -1 or count reach 100
two_largest(array,count,&Large1,&Large2,&index1,&index2);// function calling to get the largest numbers
cout << \"The First largest number\" << Large1 << \" is at position \"<< index1+1<< endl;// output the first largest number
cout << \"The Second largest number\" << Large2 << \" is at position \"<< index2+1<< endl;// output the second largest number
return 0;
}// end of main code
// function definition
void two_largest(int arr[],int c,int* L1,int* L2,int* Ind1,int* Ind2)
{
*L1 = 0;
*L2 = 0;
for(int i = 0; i<c; i++)// loop to check each element
{
if(arr[i]> *L1)// checking the array element is larger than L1
{
*L1 = arr[i];// if yes update l1 with array element
*Ind1 = i;// and change index
}
else if(arr[i] > *L2)// if the array element is larger than L2
{
*L2 = arr[i];// update L2
*Ind2 = i;// and index
}
}
}
OUTPUT
Enter numbers from 1 to 200, Maximum 100 numbers
To stop entering enter -1
100
45
3
46
7
55
8
100
101
34
3
101
45
4
-1
The First largest number101 is at position 9
The Second largest number101 is at position 12

