👤

Salut! Va rog mult sa ma ajutati la problema #986 de pe pbinfo. Am nevoie de explicatii la fiecare linie de cod pentru a intelege problema. Am sa atasez codul c++ mai jos care este 100% functional.

Salut Va Rog Mult Sa Ma Ajutati La Problema 986 De Pe Pbinfo Am Nevoie De Explicatii La Fiecare Linie De Cod Pentru A Intelege Problema Am Sa Atasez Codul C Mai class=

Răspuns :

Explicație:

Pas 1: Declaram variabilele. Vectorul este de tip float, nu int, deoarece se precizeaza in problema ca valorile sunt reale, nu naturale.

Pas 2: Dupa ce ai citit n, in for, incepi sa numeri toate numerele naturale pana la n. Ca sa iti fie mai usor sa intelegi, in loc de for(int i = 0; i < n; i++) scrie for(int i = 1; i <= n; i++).

Pas 3: Numerele de mai sus sunt folosite ca index (poziții) in vectori. In informatica, vectorii nu sunt ca in matematica, n-au sens si direcție :). Sunt mai degraba liste, iar v[i] este al i-lea element din vectorul v.

Pas 4: Testezi daca primul element este mai mare decat ultimul element, pentru a stabili intervalul. Ca sa-ti fie mai ușor, in loc sa folosești aux poti folosi doua variabile min si max.

if(m[1] > m[n]){

min = m[n];

max = m[1];

} else{

min = m[1];

max = m[n];

}

In cazul tău, aux are rolul unui "al treilea pahar" pentru a putea varsa continutul din "paharul" v[n-1] în v[0].

Pas 5: Pentru fiecare element din vector, verifici dacă face parte din interval, adica verifici dacă elementul este mai mic decat min sau daca este mai mare decat max. In cazul tău, min este v[0] si max e v[n].

Pas 6: Pentru fiecare element care nu face parte din interval, variabila C (ai grija la notații, in problema de pe pbinfo nu se numește ct) se mareste cu 1, adică ai mai gasit inca un nr care nu face parte din interval. La inceput C = 0.

Sper ca te-am ajutat!