Mitjana de les subllistes de mida k Z25382


Statement
 

pdf   zip   main.cc

thehtml

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

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

// Pre: k > 0 // Post: omple la llista mitjs amb les mitjanes de les subllistes de // mida k de la llista 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++