While statement, two largest number

I wrote a program to find the largest number. This program use a while statement to prompt the user to enter 10 numbers. Then we get the largest number.
What changes should I do if I want the program to find the two largest number of the ten numbers?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
using namespace std;

int main(){
  double counter{1};
  double number{0};
  double largest;
  cout << "Please enter a number: ";
  cin >> largest;
  while(counter<10){
   cout << "Please enter a number: ";
   cin >> number;
   if (number>largest){
    largest = number;
   }
   counter += 1;
  }
  cout << "The largest number is: " <<
   largest;
}
Create a "prev_largest" double, then just before every time largest is set, set prev_largest = largest
@Niccolo, that would work until the user typed in say "2 4 6 5".
Is there any other way to get the 2 largest number with the while statement?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>

int main() {

    double largest ;
    std::cout << "Please enter a number: ";
    std::cin >> largest ;

    double second_largest ;
    std::cout << "Please enter a second number: ";
    std::cin >> second_largest ;

    // make sure that largest is greater than second_largest
    // by swapping them if largest is less than second_largest
    if( largest < second_largest ) {

        const double temp = largest ;
        largest = second_largest ;
        second_largest = temp ;
    }

    int counter = 2 ; // note: int

    while( counter < 10 ) {

        double number ;
        std::cout << "please enter another number: " ;
        std::cin >> number;

        if( number > largest ) {

            second_largest = largest ;
            largest = number ;
        }

        else if( number > second_largest ) second_largest = number ;

        ++counter ;
    }

    std::cout << "the largest number is " << largest << '\n'
              << "and the next largest number is " << second_largest << '\n' ;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <set>
using namespace std;

int main() {
	
	multiset<int> s;
	for(int i=0; i<10; i++){
		s.insert(i);
	}
	auto it= s.crbegin();
	cout<< *it << endl; //9
	it++;
	cout<< *it << endl; //8
	
return 0;
}
Topic archived. No new replies allowed.