Informatică, întrebare adresată de Elena1elle, 9 ani în urmă

Sa se afiseze cele mai mari 2 valori dintr-un vector printr-o singura parcurgere.

Răspunsuri la întrebare

Răspuns de Medocapra
0
       Pai, in primul rand faci un for care sa parcurga toate numerele si de fiecare data cand citesti un numar, verifici daca este mai mare decat maximul curent si schimbi valoare maximului cu cea curenta daca e mai mare, apoi faci inca o verificare care sa verifice daca valoarea curenta e mai mare decat alta variabila, care sa retina a doua cea mai mare valoare, si mai mica decat maximul curent.
      Sper ca ti-am fost de ajutor.

Elena1elle: adica parcurg valorile din for pana dau de cea mai mare pe care o pun intr-un vector si iau un alt vector care compara toate valorile de dinainte si dupa cel mai mare?
Medocapra: Nu.
Medocapra: Adica faci maximul clasic (am spus cum sa il faci in primul raspuns) apoi in aceeasi parcurgere verifici daca valoarea curenta e mai mica decat maximul propriu-zis dar mai mare decat variabila care retinea cel de-al doilea maxim
Elena1elle: aaaaa, ok, merci mult :)
Medocapra: N-ai pentru ce :)
Răspuns de express
5
#include <bits/stdc++.h>
using namespace std;
int v[1005],n, i, max1 = - INT_MAX, max2 = max1;
int main()
{
cin >> n;
for(i = 1; i <= n; i ++)
{
cin >> v[i];
if(v[i] > max1) max2 = max1, max1 = v[i];
 else if(v[i] > max2) max2 = v[i];
}
cout << max1 << " " << max2;
return 0;
}

Alte întrebări interesante