Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.
Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.
Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.
Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.
Meniu shortcuturi | ? |
Căutare probleme sau utilizatori | / |
Navigare printre rezultatele căutării | ↑, ↓ |
Meniu de contact și feedback | CTRL + Shift + F |
Ieșire din meniuri | Esc |
Setări editor | CTRL + Shift + S |
Schimbare stil editor | CTRL + Shift + E |
Șabloane de cod | CTRL + Shift + 1/2/3 |
Golire editor | CTRL + Shift + 4 |
Dându-se n
valori naturale, să se afle mediana acestora — valoarea aflată la mijlocului șirului. Vom considera că elementele sunt indexate de la 1
.
n
impar (n % 2 == 1
), mediana este a n / 2 + 1
-a valoare din șir (dacă elementele ar fi crescătoare);n
par (n % 2 == 0
), mediana este n / 2
-a valoare din șir (dacă elementele ar fi crescătoare).Exemplu: Pentru n = 5
și a = [5, 2, 4, 1, 3]
, mediana este 3
: șirul a
ordonat crescător este [1, 2, 3, 4, 5]
, iar elementul de pe poziția n / 2 + 1 = 5 / 2 + 1 = 2 + 1 = 3
este 3
.
Vom ordona șirul a
crescător. Pentru asta, putem ori să folosim funcția sort()
din biblioteca <algorithm>
, ori să sortăm folosind un algoritm de sortare cunoscut.
De aici, verificăm paritatea lui n
. Dacă este impar, afișăm a[n / 2 + 1]
, altfel, afișăm a[n / 2]
. Atenție: considerăm că șirul a
are elementele indexate de la 1
.
#include <iostream>
using namespace std;
int main()
{
//Declarare și citire
int n, a[1001];
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
//Sortare crescătoare
for(int i = 1; i <= n; i++) {
for(int j = i + 1; j <= n; j++) {
if(a[i] > a[j]) {
int aux = a[i];
a[i] = a[j];
a[j] = aux;
}
}
}
//Afișarea medianei
int mediana;
if(n % 2 == 1) {
mediana = a[n / 2 + 1];
} else {
mediana = a[n / 2];
}
cout << "Mediana șirului a este " << mediana;
return 0;
}