Dadas dos tablas de frecuencias f1=F1 y f2=F2, queremos una función que actualiza la primera con los datos de la segunda. Las tablas estarán representadas por map<string,int>. Todas las frecuencias en f1 y f2 son estrictamente positivas.
Como resultado de la actualización la tabla f1 contendrá:
Por ejemplo si las tablas f1 y f2 son las mostradas aquí:
|
|
entonces después de la actualización f1 será
a | 11 |
b | 6 |
c | 17 |
d | 7 |
e | 2 |
Implementa la siguiente función
// Pre: y Post: ver la descripción del enunciado void actualiza_tabla_frec(map<string,int>& f1, const map<string,int>& f2);
Escribe un pequeño programa que lea una tabla de frecuencias f1, y a continuación, entra en un bucle en el que en cada iteración se lee una tabla de frecuencias f2, se actualiza f1 con f2 y se imprime la tabla f1.
N.B. De cara a obtener una solución lo más eficiente posible, tened en cuenta lo siguiente:
Entrada Cada tabla de frecuencias se representará en la entrada mediante una secuencia que comienza con un entero k≥ 0 seguida de una secuencia de k pares ⟨ s, f⟩ describiendo los pares que constituyen la tabla.
La entrada comienza con la subsecuencia que representa a la tabla f1. A continuación viene una serie de tablas de frecuencia (cada una representada por una secuencia con el formato que hemos descrito arriba). La última tabla de frecuencias de la serie es un tabla vacía (k = 0).
Salida Para cada tabla de frecuencias f2 de la serie, excepto la última tabla vacía que marca el final de la serie, se actualiza la tabla f1 con los datos de f2 y se imprime la tabla f1 actualizada. Una tabla de frecuencias se imprime siguiendo el mismo convenio que para la entrada: primero un entero k con su tamaño y a continuación una secuencia de los k pares ⟨ s, f⟩ que contiene la tabla (separamos las componentes s y f de cada par mediante un espacio en blanco), pero adicionalmente los pares han de estar en orden creciente de clave (ordenados por la s). Después de imprimir la tabla f1 tras cada actualización se imprime un salto de línea.
Observación Utilizad la plantilla (plantilla-solucion.cc_txt) que os damos con los ficheros públicos (icono del gatito) para preparar la solución.
Input
5 a 1 b 1 c 1 d 1 e 1 3 a 1 c 1 f 1 2 b 2 d 2 5 g 1 h 1 a 1 e 1 j 5 0
Output
6 a 1 b 1 c 1 d 1 e 1 f 1 6 a 1 b 2 c 1 d 2 e 1 f 1 9 a 1 b 2 c 1 d 2 e 1 f 1 g 1 h 1 j 5