<div dir="ltr">Hola Víctor,<div class="gmail_extra"><br><div class="gmail_quote">2013/3/4 victor Gonyi <span dir="ltr"><<a href="mailto:mrpiperoman@hotmail.com" target="_blank">mrpiperoman@hotmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


<div><div dir="ltr">Buenas noches.<br><br>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.<br><br></div></div>
</blockquote><div><br></div><div style>[CORTE]</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div dir="ltr"><br>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.<br><br>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:<br>
<br>- ¿Es correcto el planteamiento?<br></div></div></blockquote><div><br></div><div style>En principio, sí; aunque no estoy seguro de por qué has definido '<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">discreteCharacter' así:</span></div>
<div style><br></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">typedef vector< vector<int> > discreteCharacter;</span><br></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br>
</span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">si luego no lo usas al implementar la función 'decodeCharacter()'. Escribes:</span></div><div style><br></div><div style>
<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">vector< vector<int> > BonusCoinsController::</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">decodeCharacter( const char *decodeChar )</span></div>
<div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">cuando podrías haber escrito:<br></span><br>
<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">discreteCharacter </span><span style="font-size:12.727272033691406px;font-family:arial,sans-serif">BonusCoinsController::</span><span style="font-size:12.727272033691406px;font-family:arial,sans-serif">decodeCharacter( const char *decodeChar )</span><br>
</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div dir="ltr">- ¿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.<br>
</div></div></blockquote><div><br></div><div style>Tal y como lo usas al principio, vas bien encaminado. No veo que necesites hacer 2 switch.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div><div dir="ltr">- ¿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:<br>myDecodedCharacter = (     (1,1,1,0),<br>
                                              (1,2,0,0),<br>                                              (1,0,0,0),<br>                                              (1,1,1,0));<br><br>Si está bien tabulado, te puedes hacer a la idea que es realmente una E.<br>
<br>He probado con llaves, corchetes, operator= y me da errores de compilación continuamente, aun consultando la referencia: <a href="http://www.cplusplus.com/reference/vector/vector/vector/" target="_blank">http://www.cplusplus.com/reference/vector/vector/vector/</a> <br>
<br></div></div></blockquote><div><br></div><div style>Los paréntesis y comas son operadores en C++. Si quieres crear nuevos objetos de ciertos tipos, entonces tienes que indicar eso mismo al compilador. Esto sería,</div>
<div style><br></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">discreteCharacter myDecodedCharacter( 4, vector<int>(4) );</span><br></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br>
</span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][0] = 1;</span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][1] = 1;<br>
</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][2] = 1;<br></span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][3] = 0;</span></div>
<div style><br></div><div style><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[1][0] = 1;</span></div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[1][1] = 2;<br>
</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[1][2] = 0;<br></span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[1][3] = 0;</span></div>
<div><br></div><div style>y así sucesivamente.</div><div style><br></div><div style>Otra forma podría ser guardando todos los valores en una matriz (array de arrays) de enteros. Por ejemplo,</div><div style><br></div><div style>
const int aDatos[4][4] = { {1,1,1,0},</div><div style>                                        {1,1,1,0},</div><div style>                                        {<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">1,0,0,0},</span><br style="font-family:arial,sans-serif;font-size:12.727272033691406px">
                                        {<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">1,1,1,0} };</span><br></div><div style><font face="arial, sans-serif"><br>y luego, hacer la asignación explícitamente para 'myDecodedCharacter':<br>
<br></font><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][0] = </span>aDatos[0][0]<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">;</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][1] = </span>aDatos[0][<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">1];</span></div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][2] = </span>aDatos[0][2]<span style="font-size:12.727272033691406px;font-family:arial,sans-serif">;</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][3] = </span>aDatos[0][3]<span style="font-size:12.727272033691406px;font-family:arial,sans-serif">;</span></div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">...</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">También podríamos usar un bucle para automatizar hacer la copia. </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">De todas maneras, me parece contraproducente hacer esto: si ya sabes que necesitas una matriz o tabla de 4x4 enteros, entonces deberías hacer eso mismo.</span></div>
<div style><br></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">Ahora bien, si quieres que se vea los datos presentados debidamente, entonces escríbelos en comentarios. Por ejemplo,</span></div>
<div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">//  </span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">( 1,1,1,0 )</span></div>
<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">//  ( 1,2,0,0 )</span><br style="font-family:arial,sans-serif;font-size:12.727272033691406px"><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">//  ( 1,0,0,0 )</span><br style="font-family:arial,sans-serif;font-size:12.727272033691406px">
<span style="font-family:arial,sans-serif;font-size:12.727272033691406px">//  ( 1,1,1,0 )</span><font face="arial, sans-serif"><br></font></div><div><br></div><div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">discreteCharacter myDecodedCharacter( 4, vector<int>(4) );</span><br>
</div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][0] = 1;</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][1] = 1;<br></span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][2] = 1;<br>
</span><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">myDecodedCharacter[0][3] = 0;</span></div></div><div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">...</span></div>
<div><span style="font-family:arial,sans-serif;font-size:12.727272033691406px"><br></span></div><div style><span style="font-family:arial,sans-serif;font-size:12.727272033691406px">Así se ve bien lo que uno quiere hacer y de lo que trata las siguiente sentencias.</span></div>
<div><br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div dir="ltr">Es un poco complicado para mí usar el vector de forma recursiva, así que cualquier ayuda/sugerencia es bienvenida.<br>
<br></div></div></blockquote><div><br></div><div style>No se trata de un 'vector' recursivo. Ten presente que 'vector' es una clase-plantilla. Es cierto que aparece el nombre 'vector' dos veces, pero se trata de clases MUY diferentes. Es decir, existe la clase 'vector<int>' y luego la otra clase 'vector< vector<int> >'. Si lo prefieres, míralas así:<br>
<br>typedef vector<int> fila;</div><div style>typedef vector<fila> matriz;<br></div><div>...</div><div style>matriz resultado( <span style="font-family:arial,sans-serif;font-size:12.727272033691406px">4, vector<int>(4) );</span></div>
<div style><br></div><div style><br></div><div style>Espero que esto te aclare las dudas.</div><div><br></div><div style>Steven</div><div style><br></div></div></div></div>