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

 

 


Tema destacado: Introducción a Git (Primera Parte)


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

Desconectado Desconectado

Mensajes: 74



Ver Perfil
[Ayuda] Vector de punteros a objectos
« en: 24 Agosto 2013, 16:56 pm »

Hola nuevamente.
Hoy les traigo otro problemita que me tiene trabado.
El problema es el uso del vector donde tengo almacenado cada objecto.
Tengo una funcion que genero cada instancia del objecto y cuando muestro las las variables de cada objecto funciona de 10, el problema viene cuando quiero mostrar ese vector de objectos en otra funcion, este me muestra uno de los vectores que hay dentro de cada objeto pero "duplicado" cabe aclarar que nunca hago una modificacion, solamente los muestro en distintas funciones.
Este vector de objectos esta declarado de forma global.

Código
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. #include "Cartones.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11. TForm1 *Form1;
  12.  
  13. TFileStream *ioArchivo;
  14. Cartones *cCarton;
  15. vector<Cartones *> vCartones;
  16. int nCartones;
  17.  
  18. //---------------------------------------------------------------------------
  19. __fastcall TForm1::TForm1(TComponent* Owner)
  20.    : TForm(Owner)
  21. {
  22. }
  23. //---------------------------------------------------------------------------
  24.  
  25. void __fastcall TForm1::Button1Click(TObject *Sender)
  26. {
  27.    Memo1->Lines->Clear();
  28.    Memo2->Lines->Clear();
  29.    ioArchivo = new TFileStream("cartones.txt", fmCreate);
  30.  
  31.    int cantCartones = nCartones;
  32.  
  33.    for(int i=0; i<cantCartones; i++){
  34.        cCarton = new Cartones(1, 25, 15);
  35.        cCarton->setNumSerie(i+1);
  36.        cCarton->generarNumerosDeCarton();
  37.        vCartones.push_back(cCarton);
  38.    }
  39.  
  40.    // ----------------------- ACA LOS MUESTRA BIEN --------------------------
  41.    for(unsigned int i=0; i<vCartones.size(); i++){
  42.        Memo1->Lines->Append(AnsiString(vCartones[i]->getNumSerie()));
  43.        Memo1->Lines->Append(vCartones[i]->devolverNumeros()); //ESTO
  44.    }
  45.  
  46.    for(unsigned int i=0; i<vCartones.size(); i++){
  47.        Memo2->Lines->Append(AnsiString(vCartones[i]->getNumSerie()));
  48.        Memo2->Lines->Append(vCartones[i]->devolverNumeros());
  49.    }
  50.  
  51.    ioArchivo->WriteComponent(Memo2);
  52.    delete ioArchivo;
  53. }
  54. //---------------------------------------------------------------------------
  55.  
  56. void __fastcall TForm1::FormCreate(TObject *Sender)
  57. {
  58.    randomize();
  59.    nCartones = 0;
  60. }
  61. //---------------------------------------------------------------------------
  62. void __fastcall TForm1::Button3Click(TObject *Sender)
  63. {
  64.    nCartones += 3;
  65.    Label1->Caption = AnsiString(nCartones);
  66.    Label2->Caption = AnsiString(nCartones/3);
  67. }
  68. //---------------------------------------------------------------------------
  69.  
  70. void __fastcall TForm1::Button2Click(TObject *Sender)
  71. {
  72.    Memo1->Lines->Clear();
  73.    Memo2->Lines->Clear();
  74.  
  75.    ioArchivo = new TFileStream("cartones.txt", fmOpenRead | fmShareExclusive);
  76.    ioArchivo->ReadComponent(Memo2);
  77.  
  78.    vector<char> vcNumeros(25);
  79.    AnsiString aux;
  80.    int cont = 1, num = 0;
  81.  
  82.    for(int i=0; i<Memo2->Lines->Count; i+=2){
  83.        cCarton = new Cartones(1, 25, 15);
  84.        cCarton->setNumSerie(Memo2->Lines->Strings[i].ToInt());
  85.        aux = Memo2->Lines->Strings[i+1];
  86.        while(cont <= aux.Length()){
  87.            num = aux[cont];
  88.            if(num >= 1 && num <= 25)
  89.                vcNumeros[num-1] = 'X';
  90.  
  91.            cont++;
  92.        }
  93.  
  94.        cCarton->setNumeros(vcNumeros);
  95.        vCartones.push_back(cCarton);
  96.    }
  97.  
  98.    delete ioArchivo;
  99. }
  100. //---------------------------------------------------------------------------
  101.  
  102. void __fastcall TForm1::Button4Click(TObject *Sender)
  103. {
  104.    /*Cartones cCartonGanador(1, 25, 15);
  105.     cCartonGanador.generarNumerosDeCarton();
  106.     cCartonGanador.setNumerosEnteros(cCartonGanador.devolverNumeros());
  107.     Memo1->Lines->Append("Carton Ganador: ");
  108.     Memo1->Lines->Append(cCartonGanador.getNumerosEnteros());*/
  109.  
  110.    // ---------------------- ACA LOS MUESTRA MAL -----------------------
  111.    for(unsigned int i=0; i<vCartones.size(); i++){
  112.        Memo1->Lines->Append(AnsiString(vCartones[i]->getNumSerie()));
  113.        Memo1->Lines->Append(vCartones[i]->devolverNumeros()); //ESTO
  114.    }
  115.  
  116.    /*int aciertos;
  117.     for(unsigned int i=0; i<vCartones.size(); i++){
  118.         aciertos = vCartones[i]->compararCartones(cCartonGanador);
  119.         vCartones[i]->setCantNumerosAcertados(aciertos);
  120.         vCartones[i]->setNumerosEnteros(vCartones[i]->devolverNumeros());
  121.     }
  122.  
  123.     int i = 15;
  124.     for(unsigned int j=0; j<vCartones.size(); j++){
  125.         //if(vCartones[j]->getCantNumerosAcertados() == i && i >= 12 && i <= 15){
  126.             Memo1->Lines->Append("Carton: " + AnsiString(vCartones[j]->getNumSerie()) + " Aciertos: " + AnsiString(vCartones[j]->getCantNumerosAcertados()));
  127.             Memo1->Lines->Append(vCartones[j]->getNumerosEnteros());
  128.         //}
  129.             //i--;
  130.     }*/
  131. }
  132. //---------------------------------------------------------------------------
  133.  


En línea

Odio los tipos de variable de Windows.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: [Ayuda] Vector de punteros a objectos
« Respuesta #1 en: 24 Agosto 2013, 18:55 pm »

No será quizás porque no has borrado el memo antes de meter los datos?

En button1click haces el clear y en button4click no.


En línea

bemone

Desconectado Desconectado

Mensajes: 74



Ver Perfil
Re: [Ayuda] Vector de punteros a objectos
« Respuesta #2 en: 24 Agosto 2013, 19:55 pm »

No será quizás porque no has borrado el memo antes de meter los datos?

En button1click haces el clear y en button4click no.

No creo, solamente estoy mostrando unas variables del objeto que ya cargue en otra funcion.

Te dejo un ejemplo de la salida al apretar el boton 1 y al apretar el boton4 con solo 3 cartones:
Citar
Boton1:
1
1 2 3 4 6 8 10 12 13 18 20 22 23 24 25
2
1 2 3 4 7 8 11 13 16 17 18 19 22 23 25
3
1 2 4 7 8 10 13 14 16 17 18 19 20 21 22

Boton4:
1
1 2 3 4 6 8 10 12 13 18 20 22 23 24 25 1 2 3 4 6 8 10 12 13 18 20 22 23 24 25 1 2 3 4 6 8 10 12 13 18 20 22 23 24 25
2
1 2 3 4 7 8 11 13 16 17 18 19 22 23 25 1 2 3 4 7 8 11 13 16 17 18 19 22 23 25 1 2 3 4 7 8 11 13 16 17 18 19 22 23 25
3
1 2 4 7 8 10 13 14 16 17 18 19 20 21 22 1 2 4 7 8 10 13 14 16 17 18 19 20 21 22 1 2 4 7 8 10 13 14 16 17 18 19 20 21 22

Los muestra 3 veces :S

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

Perdon:

Me habia faltado poner la linea:
this->asNumeros = "";

En esta funcion:
Código
  1. AnsiString Cartones::devolverNumeros(){
  2.    this->asNumeros = "";
  3.    for(unsigned int i=0; i<this->vsNumeros.size(); i++){
  4.        if(this->vsNumeros[i] == 'A' || this->vsNumeros[i] == 'X')
  5.            this->asNumeros += AnsiString(i+1) + " ";
  6.    }
  7.        return this->asNumeros;
  8. }

Gracias!!
« Última modificación: 24 Agosto 2013, 20:05 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 punteros en asm
ASM
ny0x 4 6,960 Último mensaje 12 Mayo 2009, 21:45 pm
por ny0x
VECTOR DE PUNTEROS
Programación C/C++
m87 1 2,052 Último mensaje 4 Junio 2010, 16:38 pm
por Eternal Idol
Ayuda punteros. [c++]
Programación C/C++
ninto33 3 4,052 Último mensaje 19 Enero 2011, 01:46 am
por ninto33
Ayuda con Ejercicio de vector! ;_;
Programación C/C++
Onigiri 7 3,535 Último mensaje 25 Octubre 2012, 17:39 pm
por naderST
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 5,203 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines