Cum funcționează
Formularea „media celorlalte n – 1 elemente" sugerează două bucle imbricate: pentru fiecare
element, parcurgi tot vectorul și aduni ce nu e el. Funcționează, dar e muncă inutilă.
Observația care simplifică totul: suma celorlalte elemente este suma totală minus elementul
curent.
suma celorlalte = suma - x[i]
media celorlalte = (suma - x[i]) / (n - 1)
Deci calculezi suma o singură dată, la citire, iar apoi fiecare rezultat iese dintr-o scădere.
Două bucle simple în loc de două imbricate.
Împărțirea se face la n - 1, nu la n — media e a celorlalte elemente, care sunt cu unul mai
puține. De aceea enunțul cere n >= 2: pentru n = 1 ai împărți la zero.
Un detaliu esențial: nu poți scrie rezultatele înapoi în X în timpul buclei. Dacă ai face
x[i] = (suma - x[i]) / (n - 1), ai strica suma pentru pașii următori — aceasta a fost calculată
cu valorile originale. De aceea se afișează direct. Dacă chiar ai nevoie de vectorul modificat,
îl construiești într-unul separat.
Pentru X = [7, 14, 20], suma = 41:
(41 - 7) / 2 = 17
(41 - 14) / 2 = 13.5
(41 - 20) / 2 = 10.5
Greșeli frecvente
- Împărțirea la
n în loc de n - 1 — media include din greșeală și elementul curent.
- Scrierea rezultatului înapoi în
X în timpul parcurgerii — elementele deja modificate
falsifică restul calculelor.
int în loc de double — enunțul cere numere reale, iar rezultatele au parte zecimală
(13.5). Cu int s-ar afișa 13.
- Două bucle imbricate — rezultat corect, dar mult mai lung și mai ușor de greșit la indici.
- Recalcularea sumei în buclă — anulează exact avantajul metodei.