Implementa una acció ITERATIVA que, donada una llista d’enters i un natural , torni una altra llista amb les mitjanes de cada subllista de mida 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].
Només cal enviar el procediment demanat; el programa principal serà ignorat.
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.
Input/Output