Mitjana de les subllistes de mida k Z25382


Statement
 

pdf   zip   main.cc

Implementa una acció ITERATIVA que, donada una llista d’enters ll i un natural kk, torni una altra llista amb les mitjanes de cada subllista de mida kk començant pel principi de la llista.

La capçalera de l’acció és la següent:

// \textbf{Pre}: k $>$ 0
// \textbf{Post}: omple la llista \emph{mitjs} amb les mitjanes de les subllistes de
//   mida \emph{k} de la llista \emph{l} començant des de primer element de la llista.
void mitjana_subllistes(const list<int> &l, unsigned int k, list<double> &mitjs)

Per exemple, si ens passen la llista [33, 12, 18, 32, 6, 11, 2] i k=3 les subllistes de mida 3 serien:

[[ 33, 12, 18, 32, 6, 11, 2 ]]
[[ 33, 12, 18 ]] 21
[[ 12, 18, 32 ]] 20.6667
[[ 18, 32, 6 ]] 18.6667
[[ 32, 6, 11 ]] 16.3333
[[ 6, 11, 2 ]] 6.33333

Per tant, la llista que conté la mitjana de cada subllista és:

[21, 20.6667, 18.6667, 16.3333, 6.33333].

Observació

Només cal enviar el procediment demanat; el programa principal serà ignorat.

Observació

Les subrutines que creïs han de treballar només amb llistes (la classe list de la biblioteca STL). Has de trobar una solució ITERATIVA i eficient del problema. En particular, no hi hauria d’haver cap crida recursiva en cap de les subrutines que implementis. Si crees subrutines auxiliars, afegeix-hi les corresponents Pre i Post. En els bucles inclou l’invariant del bucle i la funció de fita.

Public test cases
  • Input/Output

    mitjana_subllistes([33, 12, 18, 32, 6, 11, 2], 3) → [21, 20.6667, 18.6667, 16.3333, 6.33333]
    mitjana_subllistes([33, 12, 18, 32, 6, 11, 2], 5) → [20.2, 15.8, 13.8]
    mitjana_subllistes([33, 12, 18, 32, 6, 11, 2], 10) → []
    mitjana_subllistes([12, 47, 4, 4, 6, -47, 10], 2) → [29.5, 25.5, 4, 5, -20.5, -18.5]
    mitjana_subllistes([], 1) → []
    mitjana_subllistes([], 2) → []
    mitjana_subllistes([], 3) → []
    mitjana_subllistes([], 4) → []
    mitjana_subllistes([], 5) → []
    mitjana_subllistes([1471, -47000, 2, 34704, 274, 74074], 2) → [-22764.5, -23499, 17353, 17489, 37174]
    mitjana_subllistes([1471, -47000, 2, 34704, 274, 74074], 4) → [-2705.75, -3005, 27263.5]
    mitjana_subllistes([1471, -47000, 2, 34704, 274, 74074], 6) → [10587.5]
    mitjana_subllistes([1471, -47000, 2, 34704, 274, 74074], 8) → []
    mitjana_subllistes([47, -470, 471, -472, 473, -474, 475, -476, 477, -478, 479, -10470], 3) → [16, -157, 157.333, -157.667, 158, -158.333, 158.667, -159, 159.333, -3489.67]
  • Information
    Author
    Bernardino Casas
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++