[C con Clase] Problema para guardar matrices como vectores
victor Gonyi
mrpiperoman en hotmail.com
Lun Mar 4 22:50:12 CET 2013
Buenas noches.
Estoy intentando hacer una estructura de datos para guardar valores tipo int, que pueden ser 0, 1 o 2. Para ello, quiero usar un vector compuesto de vectores.
Para ello he creado un tipo concreto:
typedef vector< vector<int> > discreteCharacter;
Esta es la especificación que he diseñado:
/**
* \brief Transform a char given into an Decoded Char
*
* Description: This function is used by decodeMessage. Must decode all chars and concatenate the result in phraseTotal.
* Length can be variable.
*
* 0 = No coin
* 1 = Coin
* 2 = Coin with half offset down
*
* - Use base 2 to set spacial position for each coin.
*
* Example: "E" length = 4
* ' ' '
* 1 1 1 0 |||||||||||| ||||
* 1 2 0 0 |||||||||||| |||| = 1 @@ = 2
* 1 0 0 0 |||| @@
* 1 1 1 0 ||||@@
* ||||@@
* |||| '
* |||||||||||| = 0
* ||||||||||||
*
* \param[in] decodeChar = Char you want to translate
* \param[out] 2dim-vector = with values 0,1,2 in array
*
*/
vector< vector<int> > BonusCoinsController::decodeCharacter(const char *decodeChar)
{
printf("BonusCoinsController decoding char: %s", decodeChar);
discreteCharacter myDecodedCharacter(4, vector<int>(4));
//myDecodedCharacter.push_back(vector<int> (1,1,1,0));
/*
switch (decodeChar)
{
case "E":
/*
myDecodedCharacter = ( (1,1,1,0),
(1,2,0,0),
(1,0,0,0),
(1,1,1,0));
*/
break;
default:
break;
}*/
return myDecodedCharacter;
}
Es decir, antes una entrada compuesta por 1 solo caracter: "A", "E", "~", debe devolver un vector de longitud X, que varía según el caracter introducido.
Mi falta de experiencia manejando vectores me hace complicado buscar la forma más correcta/elegante de hacer la función. De ahí mis preguntas:
- ¿Es correcto el planteamiento?
- ¿Cuál es la mejor manera de crear el tipo discreteCharacter si a priori no sé cuanta longitud tiene el caracter introducido? Podría hacer 2 switch pero lo veo un poco engorroso, y no sé si es lo más correcto reservarlo dentro del switch y poner un return en cada uno.
- ¿Cuál es la sintaxis correcta para que se pueda poner los valores de forma que "a ojo" se pueda ver que carácter es y facilitar su entendimiento? Es decir viendo:
myDecodedCharacter = ( (1,1,1,0),
(1,2,0,0),
(1,0,0,0),
(1,1,1,0));
Si está bien tabulado, te puedes hacer a la idea que es realmente una E.
He probado con llaves, corchetes, operator= y me da errores de compilación continuamente, aun consultando la referencia: http://www.cplusplus.com/reference/vector/vector/vector/
Es un poco complicado para mí usar el vector de forma recursiva, así que cualquier ayuda/sugerencia es bienvenida.
Gracias por vuestro tiempo, un saludo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130304/0a9aaec1/attachment.html>
Más información sobre la lista de distribución Cconclase