Universidad de Costa Rica
|
|
ERAV
"
Si su programa recibe los datos de esta tabla de arriba, cuyos
valores están el la hoja de cáculo
"ERAV.xls
", producirá un listado que contenga
los valores de los datos apropiadamente decodificados.
Su trabajo consiste en contriuir 2 diccionarios, llamados
"WORD
" y "STRING
" en donde esté
almacenada la codificación de los valores que aparece en
las columnas "ATTRIB
" y "VAL
" del
"ERAV
".
<word ID_WORD="1111" > <descr LANG="es" DESCR="automotor" /> </word> <word ID_WORD="1234" > <descr LANG="en" DESCR="number doors" /> <descr LANG="es" DESCR="cantidad puertas" /> </word> <string ID_STRING="7700001" > <descr LANG="**" DESCR="hyundai" /> </string> <string ID_STRING="7700022" > <descr LANG="es" DESCR="200 Sur del Palo de Guayaba" /> <descr LANG="en" DESCR="200 South of the Guayaba tree" /> </string> |
El documento
XML
que se muestra aquí es un ejemplo de una tabla de
códigos para decodificar el "ERAV
". Por
ejemplo, el valor "0001234
" que aparece en la hoja de
cálculo en el renglón 4 se decodificará como
la hilera "number doors
" si se usa el lenguaje
inglés "en
", pero en español
"es"
el valor obtenido será
"cantidad puertas"
.
Utilice un diccionario
STL
para almacenar la tabla de codificación. Use como llave de
su estructura
std::map<>
un número entero, tomado del
valor "ID_WORD
" o "ID_STRING
" del
documento XML, y asóciele la lista de traducciones, que
estará almacenado en una lista de parejas STL de tipo
std::string
:
WORD[1111] → { < "es","automotor" > }
WORD[1234] → { < "en","number doors" > ,
< "es","cantidad puertas" > }
STRING[7700001] → { < "**","hyundai" > }
STRING[7700022] → { < "es","200 Sur del Palo de Guayaba" > ,
< "en","200 South of the Guayaba tree" > }
La estructura de los 2 diccionarios "WORD
" y
"STRING
" es exactamente la misma, pues ambos son
instancias de la
misma clase, que se usan para una columna diferente de la tabla
"ERAV
": "ATTRIB
" y "VAL
" en
respectivamente. Los métodos principales de su clase
diccionario son los siguientes:
std::string lookUp( int n , const std::string& lang ) const;
bool update( int n , const std::string& lang , const std::string& descr );
Implemente un programa que tome los valores del ERAV y produzca un
listado en donde no aparezca el código sino la hilera que
corresponde al código. Su programa debe recibir como
parámetro en la línea de comandos el idioma para la
decodificación: {
"es" ,
"en" ,
"it" ,
... }
. Tome en cuenta que el valor "**"
funciona como un comodín que se usa para todos los
lenguajes a menos que exista ya un valor para un lenguaje
específico.
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 7 días | |
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|