elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [Ayuda] Vectores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] Vectores  (Leído 2,661 veces)
bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
[Ayuda] Vectores
« en: 23 Agosto 2013, 03:32 am »

Buenas noches.
Tengo un gran problema que me esta trabando y rompiendo mucho las bolas.
Tengo varios vectores de char donde en varias posiciones las marco con una "X" y luego las comparo.
Si en la posicion del vector1 y en la misma posicion del vector2 hay una "X", marco el vector1 con una "A" y actualizo un contador.
Despues muestro todas las posiciones donde en el vector1 hay una "A" y no muestra nada.
El problema es que el contador me lo devuelve correcto (las coincidencias de posiciones en las que hay una "X" entre los dos vectores) pero el vector1 nunca es marcado con una A o una D.

Por ejemplo:



El codigo de la discordia:
Código
  1. int Cartones::compararCartones(Cartones ganador){
  2.    int coincidencias = 0;
  3.    vector<char> cartonGanador = ganador.getNumeros();
  4.    for(int i=0; i<cartonGanador.size(); i++){
  5.        if(cartonGanador[i] == 'X' && this->vsNumeros[i] == 'X'){
  6.            this->vsNumeros[i] = 'A';
  7.            coincidencias++;
  8.        }
  9.        else
  10.            this->vsNumeros[i] = 'D';
  11.    }
  12.        return coincidencias;
  13. }


En línea

Odio los tipos de variable de Windows.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [Ayuda] Vectores
« Respuesta #1 en: 23 Agosto 2013, 10:02 am »

¿A quien te refieres con vector1? ¿Al vsNumeros?

Por cierto, unos consejos de eficiencia:

Código
  1. int Cartones::compararCartones(Cartones ganador){

No pases el objeto entero, su copia supone un desperdicio de memoria y de tiempo de ejecución. Pasa una referencia en su lugar, y ya de paso lo haces constante:

Código
  1. int Cartones::compararCartones(const Cartones &ganador){

Por otro lado:

Código
  1. vector<char> cartonGanador = ganador.getNumeros();

Copiar un vector supone gastar muchos recursos. No sé si es mejor que devuelvas un puntero/referencia al vector, aunque eso supondría un encapsulamiento más débil.


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: [Ayuda] Vectores
« Respuesta #2 en: 23 Agosto 2013, 16:01 pm »

¿A quien te refieres con vector1? ¿Al vsNumeros?

Por cierto, unos consejos de eficiencia:

Código
  1. int Cartones::compararCartones(Cartones ganador){

No pases el objeto entero, su copia supone un desperdicio de memoria y de tiempo de ejecución. Pasa una referencia en su lugar, y ya de paso lo haces constante:

Código
  1. int Cartones::compararCartones(const Cartones &ganador){

Por otro lado:

Código
  1. vector<char> cartonGanador = ganador.getNumeros();

Copiar un vector supone gastar muchos recursos. No sé si es mejor que devuelvas un puntero/referencia al vector, aunque eso supondría un encapsulamiento más débil.


Con vector1 me refiero a vsNumeros y con vector2 a cartonGanador.
Gracias por los consejos. ¿Sabes porque no puedo modificar vsNumeros?

En cuanto al vector lo puedo poner asi:
Código
  1. int Cartones::compararCartones(const Cartones &ganador){
  2.    int coincidencias = 0;
  3.    for(unsigned int i=0; i<ganador.getNumeros().size(); i++){
  4.        if(ganador.getNumeros()[i] == 'X' && this->vsNumeros[i] == 'X'){
  5.            this->vsNumeros[i] = 'A';
  6.            coincidencias++;
  7.        }
  8.        else
  9.            this->vsNumeros[i] = 'D';
  10.    }
  11.        return coincidencias;
  12. }
« Última modificación: 23 Agosto 2013, 16:13 pm por bemone » En línea

Odio los tipos de variable de Windows.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: [Ayuda] Vectores
« Respuesta #3 en: 23 Agosto 2013, 17:04 pm »

Con vector1 me refiero a vsNumeros y con vector2 a cartonGanador.
Pues el código es correcto, asi que el error debe estar en otra parte  :huh:

Los dos vectores tienen el mismo tamaño no?

En cuanto al vector lo puedo poner asi:
Código
  1. int Cartones::compararCartones(const Cartones &ganador){
  2.    int coincidencias = 0;
  3.    for(unsigned int i=0; i<ganador.getNumeros().size(); i++){
  4.        if(ganador.getNumeros()[i] == 'X' && this->vsNumeros[i] == 'X'){
  5.            this->vsNumeros[i] = 'A';
  6.            coincidencias++;
  7.        }
  8.        else
  9.            this->vsNumeros[i] = 'D';
  10.    }
  11.        return coincidencias;
  12. }
Eso es peor, en cada iteración estas generando un vector nuevo *_*. Lo puedes dejar como estaba si eso, si es un vector de 10-20 números no supone tanta carga (lo malo sería si fuesen 1000 números xD).
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: [Ayuda] Vectores
« Respuesta #4 en: 23 Agosto 2013, 17:12 pm »

Pues el código es correcto, asi que el error debe estar en otra parte  :huh:

Los dos vectores tienen el mismo tamaño no?
Eso es peor, en cada iteración estas generando un vector nuevo *_*. Lo puedes dejar como estaba si eso, si es un vector de 10-20 números no supone tanta carga (lo malo sería si fuesen 1000 números xD).

Tienen exactamente el mismo tamaño (25). Lo que no entiendo es porque no se modifica el vector, en la condicion entra ya que el contador se actualiza.


------------------------------------------------------------------------------------------------

Solucionado: habia un problema en el orden en como llamaba los metodos.

 :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[ :-[

Gracias amchacon por tu buena onda!
« Última modificación: 23 Agosto 2013, 17:28 pm por bemone » En línea

Odio los tipos de variable de Windows.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con vectores (primos)
Java
thevirtualx 2 4,711 Último mensaje 11 Mayo 2009, 22:05 pm
por sapito169
Ayuda con vectores. « 1 2 »
Programación C/C++
elkiedis 10 6,075 Último mensaje 10 Octubre 2012, 07:19 am
por rir3760
ayuda con vectores c++
Programación C/C++
indict 3 2,369 Último mensaje 15 Noviembre 2012, 09:23 am
por norris
Ayuda con vectores
Programación C/C++
norris 0 1,421 Último mensaje 17 Noviembre 2012, 21:11 pm
por norris
ayuda en c vectores
Programación C/C++
howaboutno 8 3,204 Último mensaje 18 Diciembre 2012, 18:58 pm
por howaboutno
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines