Informatică, întrebare adresată de ciprian74, 8 ani în urmă

Cerinţa
Să se scrie un program care citește un șir de n numere naturale şi determină cele mai mari două numere din şir.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale nenule.

Date de ieşire
Programul afișează pe ecran numerele x y, reprezentând valorile cerute, separate prin exact un spaţiu.

Restricţii şi precizări
2 ≤ n ≤ 1000
cele n numere citite vor fi mai mici decât 2.000.000.000
valorile afişate respectă relaţia x ≥ y



Exemplu
Intrare

5
72 30 12 75 17
Ieșire

75 72

Salut! Va rog mult sa ma ajutati la aceasta problema. Nu reusesc sa o fac de 100 de puncte pe pbinfo. Este problema #119. As dorii si explicatii la fiecare pas al problemei

Răspunsuri la întrebare

Răspuns de andreidamian604
1

#include <iostream>

using namespace std;

int main()

{

int n,i,x,a=-1,b=-1;

cin >> n;

for (i=1; i<=n; i++)

{

cin >> x;

if (x>b)

{

a=b;

b=x;

}

else if (x>a) a=x;

}

cout << b << ' ' << a;

return 0;

}

citești n

cu for de la 1 la n citești cele n numere

numărul citit este x, variabila

inițializezi a, b, 2 variabile cu -1 ( orice număr mai mic ca 0 )

•a și b o sa devina cele 2 maxime

-1 ptr că numerele citite sunt naturale. când trebuie sa afli maxim inițializezi cu minim, când trebuie sa afli minim inițializezi cu o valoare maximă

după ce citești primul număr îl compari cu maximul tau, adică cu b

daca este mai mare, maximul primește valoarea, și maximul2 ( a ) primește b

intra pe else if când numărul nu este mai mare decât b

pe exemplu:

5

72 30 12 75 17

72 > -1 deci a = -1, b = 72

nu intra in else if

30 nu este mai mare decât b, b fiind maximum tau

la fel și la 12

apoi 75

75 > 72 deci a = 72, iar b primește 75

observi că din If a rămâne -1 până când găsești un număr mai mare ca decât primul număr citit

daca ai de exemplu

5

5 4 3 2 1

îl citește pe 5, b = 5

și apoi intra doar in else if,

daca 4 > -1

-1 = 4 ( algoritmul clasic ptr aflare a maximului )

sper că înțelegi, la mine in cap are mai multa logica

codul e diferit față de ce ți-am mai trimis, e scris de când eram la îenceput :)


ciprian74: Multumesc!
Alte întrebări interesante