Problema medie aritmetica

27 Iulie, 2009 la 7:42 662 afisari

Etichete : , , , , , , , , ,

Am dat acum cateva saptamani peste o problema destul de usoara, i-am modificat cerinta astfel incat sa o fac mai interesanta. Enjoy, it’s fun ! :D

Problema initiala suna asa:

Se da un vector cu n elemente de tip float. Sa se transforme vectorul intr-unul care sa aiba pe pozitia i media aritmetica a elementelor, excluzandu-l pe el.

Destul de simplu de rezolvat, putem copia intr-un vector b elementele vectorului initial a. Apoi aplicam transformarile necesare.

M-am gandit sa modific enuntul :

Se da un vector cu n elemente de tip intreg. Sa se transforme vectorul intr-unul care sa aiba pe pozitia i media aritmetica a elementelor, excluzandu-l pe el. Nu se va utiliza un vector extern/auxiliar si nici un alt tablou.

Lucrurile se mai complica un pic, asa-i? Cum m-am gandit sa rezolv asta? Sa luam ca exemplu vectorul cu 5 elemente:

7 9 2 4 5

Noul vector va trebui sa arate astfel:

5  4.5 6.25 5.75 5.5

Va trebui sa calculam mediile aritmetice astfel: suma tutror numerelor in afara de numarul curent / (n-1).

M-am gandit sa maresc dimeniunea vectorului de 2 ori. Si sa pun pe pozitia n+1 primul element,pe pozitia n+2 al doilea element si tot asa. Voi obtine vectorul:

7 9 2 4 5 7 9 2 4 5 (ceea ce este scris cu italic este ceea ce am adaugat)

Voi inlocui primele n elemente cu mediile aritmetice calculate cu ajutorul numerelor de dupa n. Solutia este simpla supa parerea mea, iar problema mi s-a parut mai simpatica dupa ce am modificat-o.

Sursa o gasiti aici .

Like it? :D

Recomandam, pe aceeasi tema

Tutoriale WEB – Concurs pentru programatori

Comentarii la "Problema medie aritmetica"

  1. Draguta problema pentru un incepator.Insa solutia explicata de tine nu e cea mai optima.

    Eu as propune o solutie liniara.

    Fie A, vectorul cu cele n elemente citite si sum = A[0] + A[1] +.. A[n-1]

    Parcurgem sirul si vom avea A[i] = (sum-A[i])/(n-1)
    And thats it :D

  2. miculprogramator says:

    Uuuuuuuu !!! Ce simplu :) ). Nu mi-a trecut prin cap. =))

Lasa un comentariu