Wyjątek w poszukiwaniu drugiej największej.

0

Dla zestawu który podałeś działa, z tym że dla pierwszych 10 liczb a 11 jest decydująca.
Propozycje przerobienia algorytmu:
1: sortowanie przez wstawianie zrealizowane podczas czytania liczb
2: zmiana struktury kodu

/*m - mniejsza;
x - najwieksza;
w - wczytana*/
if(w > m)
  {
  if(w > x)
     {
     m = x;
     x = w;
     }
  else
     m = w;
  }
0

Mój drugi, toporny kod nie zalicz tego samego testu:

 #include <iostream>
#include <list>
using namespace std;

int main() {
   list<int>lista;
   int temp=0;
   cin >> temp;
   lista.push_back(temp);
   int i=0;
   for (i=0; i!=9; i++)
   {
      cin >> temp;
      if (temp>=lista.front())
      lista.push_front(temp);
      else
      lista.push_back(temp);
   }
   lista.pop_front();
   list<int>ldwa;
   for (i=0; i!=9; i++)
   {
      if (lista.front()>=ldwa.front())
         ldwa.push_front(lista.front());
      else
         ldwa.push_back(lista.front());
      lista.pop_front();
 }  
 cout << ldwa.front();

}

EDIT:
zrobione, wszystko działa:

#include<cstdio> 
#include<vector> 
#include<algorithm> 
#define ll long long
using namespace std; int main() { 
   vector<ll int>A(10);
    for(int i=0;i<10;i++)
     {
         scanf("%lld",&A[i]);
       } 
    sort(A.begin(),A.end()); printf("%lld",A[8]);
    }
0

Z tego co napisałeś o zadaniu, twój kod działa źle, bo dla: 0 0 0 0 0 0 0 0 1 1 daje 1, a 1 nie jest największą liczbą mniejszą od największej.
Dlatego przy zadaniach zazwyczaj są przykładowe inputy i outputy które pozwalają wykluczyć takie błędy w rozumowaniu.

0

Dzięki za pomoc. Obydwa kody są dobre, tylko trzeba wstawić long long inta, wtedy wszystko działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0