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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación C/C++ / Punteros y memoria dinamica en: 28 Agosto 2015, 19:11 pm
Buenas tardes gente,

Estoy aprendiendo C y me estoy rompiendo el marote contra la pared bien fuerte.
Tengo una estructura Persona. La cual quiero manipularla dinamicamente a traves de la estructura Array (TDA) y me surgio un problema que desconozco a que se puede deber.

Si cargo el array desde el main() todo funciona perfecto. Cuando lo quiero cargar a traves de un metodo, se rompe todo.

He aqui el codigo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. typedef struct persona{
  6.    char *nombre;
  7.    int edad;
  8.    int sexo;
  9. }Persona;
  10.  
  11. typedef struct {
  12.    int size;
  13.    Persona vecPersona[];
  14. }Array;
  15.  
  16. Array* getArrayInstance(){
  17.    Array *vec;
  18.    vec = (Array*) malloc (sizeof(Persona));
  19.    vec->size = 0;
  20.    return vec;
  21. }
  22.  
  23. void push_back(Array ** vec, Persona tipito){
  24.    (*vec)->vecPersona[(*vec)->size] = tipito;
  25.    (*vec)->size++;
  26.    printf("%d-", (*vec)->size);
  27.    int newSize = (*vec)->size*2-(*vec)->size+1;
  28.    Array *tmp = realloc((*vec), newSize*sizeof(Persona));
  29.    if(tmp)
  30.        *vec = tmp;
  31.    else
  32.        (*vec)->size--;
  33. }
  34.  
  35. void mostrarPersonas(Array *vec){
  36.    int i;
  37.    printf("\n\n");
  38.    printf("%d", vec->size);
  39.    for(i=0; i<vec->size; i++){
  40.        printf("(%d) Nombre: %s - Edad: %d - Sexo: ", i, vec->vecPersona[i].nombre, vec->vecPersona[i].edad);
  41.        if(vec->vecPersona[i].sexo == 0)
  42.            printf("Masculino");
  43.        else
  44.            printf("Femenino");
  45.        printf("\n");
  46.    }
  47. }
  48.  
  49. void cargarPersonas(Array **vec){
  50.    int i, edad, random;
  51.    int cantPersonas = rand()%30+1;
  52.    Persona aux;
  53.    char **hombres = {"Ramiro","Pedro","Federico","Jose","Antonio","Pablo","Raul","Gustavo","Gonzalo","Airton"};
  54.    char **mujeres = {"Mariana","Jennifer","Luz","Roxana","Ana","Sol","Micaela","Romina","Melina","Camila"};
  55.    for(i=0; i<cantPersonas; i++){
  56.        edad = rand()%80+1;
  57.        aux.edad = edad;
  58.        if( (random = rand()%10) %2 == 0){ // hombres
  59.            aux.nombre = hombres[random];
  60.            aux.sexo = 0;
  61.        }
  62.        else{
  63.            aux.nombre = mujeres[random];
  64.            aux.sexo = 1;
  65.        }
  66.  
  67.        push_back(vec, aux);
  68.    }
  69. }
  70.  
  71.  
  72. int main()
  73. {
  74.    srand(time(NULL));
  75.    Array *vecPersonas = getArrayInstance();
  76.  
  77.    Persona aux;
  78.    aux.nombre="Cecilia";
  79.    aux.edad=27;
  80.    aux.sexo=0;
  81.    push_back(&vecPersonas, aux); // Esto anda
  82.    push_back(&vecPersonas, aux); // Esto anda
  83.    push_back(&vecPersonas, aux); // Esto anda
  84.    push_back(&vecPersonas, aux); // Esto anda
  85.    push_back(&vecPersonas, aux); // Esto anda
  86.    push_back(&vecPersonas, aux); // Esto anda
  87.  
  88.    //cargarPersonas(&vecPersonas); // Esto no
  89.    //printf("%d", vecPersonas->size);
  90.    mostrarPersonas(vecPersonas);
  91.  
  92.    return 0;
  93. }
  94.  
  95.  

 :-\ :-\
2  Programación / Programación C/C++ / Borrar directorio [WINDOWS] en: 24 Marzo 2015, 09:45 am
Buenas.

Me quede he quedado estancado y vengo a pedirles una pequeña ayudita.

No he podido lograr borrar un directorio del sistema, he leído que el mismo debe estar vacio (no contener ningún archivo dentro)  para poder borrarse. Cuestión que por mas que elimine los archivos, esta porquería no se borra. (Linea 71)

Aquí el supuesto intento de código:

Código
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.    WIN32_FIND_DATA datosArchivo;
  9.    HANDLE hArchivo, hDirArchivo;
  10.    int bEncontro, bDirEncontro;
  11.    DWORD dAtributos;
  12.    string sNombreArchivo, sPathArchivo, sPathDirArchivo;
  13.    string sPath = "C:/Recycler/*";
  14.  
  15.    hArchivo = FindFirstFile(sPath.c_str(), &datosArchivo);
  16.    sNombreArchivo = datosArchivo.cFileName;
  17.    while(bEncontro != 0){
  18.  
  19.        sPathArchivo.append(sPath.substr(0, sPath.length()-1));
  20.        sPathArchivo.append(sNombreArchivo);
  21.        dAtributos = GetFileAttributes(sNombreArchivo.c_str());
  22.  
  23.        /* Si esta oculto lo desocultamos.
  24.            Pongo atributos normales porque si es READONLY no me deja borrarlo */
  25.        if((dAtributos & FILE_ATTRIBUTE_HIDDEN) == FILE_ATTRIBUTE_HIDDEN){
  26.            if(SetFileAttributes(sPathArchivo.c_str(), FILE_ATTRIBUTE_NORMAL) != 0)
  27.                cout << sNombreArchivo + " dejo de estar oculto." << endl;
  28.        }
  29.  
  30.        // Eliminacion de porquerias
  31.        if(sNombreArchivo.find(".lnk", 0) != std::string::npos){
  32.            if(DeleteFile(sPathArchivo.c_str()) != 0){
  33.                cout << "El archivo ficticio: " << sNombreArchivo << " fue borrado con exito." << endl;
  34.            }
  35.        }else if(sNombreArchivo.find("autorun.inf", 0) != std::string::npos){
  36.            if(DeleteFile(sPathArchivo.c_str()) != 0){
  37.                cout << sNombreArchivo << " borrado." << endl;
  38.            }
  39.        }else if(sNombreArchivo.find("RECYCLER", 0) != std::string::npos){
  40.            if((dAtributos & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY){
  41.                if(SetCurrentDirectory(sPathArchivo.c_str()) != 0){
  42.                    sPathDirArchivo = sPathArchivo + "/*";
  43.                    hDirArchivo = FindFirstFile(sPathDirArchivo.c_str(), &datosArchivo);
  44.                    sNombreArchivo = datosArchivo.cFileName;
  45.                    while(bDirEncontro != 0){
  46.                        //cout << sPathDirArchivo;
  47.                        sPathDirArchivo.append(sPathArchivo);
  48.                        sPathDirArchivo.append("/");
  49.                        sPathDirArchivo.append(sNombreArchivo);
  50.                        dAtributos = GetFileAttributes(sNombreArchivo.c_str());
  51.  
  52.                        if((dAtributos & FILE_ATTRIBUTE_HIDDEN) == FILE_ATTRIBUTE_HIDDEN ||
  53.                            (dAtributos & FILE_ATTRIBUTE_READONLY) == FILE_ATTRIBUTE_READONLY){
  54.                            if(SetFileAttributes(sPathDirArchivo.c_str(), dAtributos & ~FILE_ATTRIBUTE_NORMAL) != 0){
  55.                                cout << sPathArchivo << " atributo READ_ONLY removido." << endl;
  56.                                if(SetFileAttributes(sPathDirArchivo.c_str(), FILE_ATTRIBUTE_NORMAL) != 0){
  57.                                    cout << sPathDirArchivo + " dejo de estar oculto." << endl;
  58.                                }
  59.                            }
  60.                        }
  61.  
  62.                        if(DeleteFile(sPathDirArchivo.c_str()) != 0){
  63.                            cout << sPathDirArchivo << " borrado con exito." << endl;
  64.                        }
  65.  
  66.                        sPathDirArchivo.clear();
  67.                        bDirEncontro = FindNextFile(hDirArchivo, &datosArchivo);
  68.                        sNombreArchivo = datosArchivo.cFileName;
  69.                    }
  70.  
  71.                    if(RemoveDirectory(sPathArchivo.c_str()) != 0){
  72.                        cout << "Directorio " << sNombreArchivo << " borrado con exito." << endl;
  73.                    }
  74.                }
  75.            }
  76.        }
  77.  
  78.        sPathArchivo.clear();
  79.        bEncontro = FindNextFile(hArchivo, &datosArchivo);
  80.        sNombreArchivo = datosArchivo.cFileName;
  81.    }
  82.  
  83.    FindClose(hArchivo);
  84.    return 0;
  85. }
  86.  

Desde ya, muchas gracias.
3  Programación / PHP / Problemas con inclusiones de archivos en: 26 Febrero 2015, 16:19 pm
Buenos días/tardes/noches.

Hace varios días vengo teniendo este problema que ya me sobrepaso y bloqueo totalmente.

Tengo una tabla en donde se cargan localidades dependiendo de la provincia que selecciono en un comboBox. El comboBox llama a un archivo .php mediante AJAX donde tengo los archivos que debo incluir.

  • require_once "../../Includes/include.functions.varias.php";
  • require_once "../../Includes/multilanguage/multilanguage.php";

Ajax.php
Código
  1. <?php
  2.  //session_start();
  3.  //ob_start();
  4.  require_once "../../Includes/sanitize.inc.php";  
  5.  require_once "../../Actions/domicilio_config.php";
  6.  require_once "../../Includes/include.config.php";
  7.  require_once "../../Includes/include.functions.varias.php";
  8.  require_once "../../Includes/multilanguage/multilanguage.php";
  9.  
  10.  ob_start();
  11.  
  12.  global $pais_default, $provincia_default;
  13.  
  14.  $link=mysql_connect ($mysql_host, $mysql_username, $mysql_passwd) ;
  15.  mysql_select_db ($mysql_database,$link);
  16.  
  17.  header("Content-type: text/javascript; charset=iso-8859-1");//sino devuelve el texto en UTF-8 y no salen los acentos!!
  18.  $solapa=sanitize($_GET['solap'],SQL,'0','15');
  19.  $pais=sanitize($_POST['pais'],SQL,'0','5');//este viene de ajaxCallProvincia()
  20.  if($_POST['reload']=='provincias'){//esto es para cuando se lo llama desde el combo de paises de la solapa de provincias, para cargar las provincias de ese pa&#65533;s
  21.  $solapa_html=sanitize($_POST['reload'],HTML);  
  22.  echo(reload_lista_provincias($pais, $solapa_html));
  23.  }else{
  24.  if(isset($_GET['pais']) && $_GET['pais']!=''){
  25. $pais=sanitize($_GET['pais'],SQL,'0','5');//este viene de la url del tab, que se carga cuando se esta volviendo de un new upd
  26.  }else{
  27. $pais=$pais_default;  
  28.  }  
  29.  
  30.  if(isset($_GET['provincia']) && $_GET['provincia']!=''){
  31. $provincia=sanitize($_GET['provincia'],SQL,'0','5');//este viene de la url del tab, que se carga cuando se esta volviendo de un new upd
  32.  }else{
  33.  if($pais==$pais_default){//solo puedo usar la provincia default si el pais es el default tambien
  34. $provincia=$provincia_default;  
  35.  }else{
  36.   $provincia='';  
  37.  }
  38.  }    
  39.  
  40.  echo(listar_domicilio($solapa, $pais, $provincia));
  41.  }
  42.  
  43.  
  44.  mysql_close($link);
  45. ?>

Mi problema es que solo se incluyen los archivos la primera vez que se carga el comboBox. No deberia cargarse el archivo ajax.php cada vez que selecciono un item del comboBox?
Si quiero cambiar de localidad en el comboBox, me muestra que no existe la función
getTranslationObject() que esta definida en ../../Includes/include.functions.varias.php

Quisiera saber la forma de que se incluyan los archivos cada vez que yo selecciono una localidad del comboBox y no solo la primera vez (cuando se carga la pagina en la localidad por defecto).

Desde ya, muchas gracias.
4  Programación / Desarrollo Web / SetInterval no esta declarado. en: 18 Marzo 2014, 05:03 am
Hola foreros, ando con un problema que me esta comiendo el coco, cabe aclarar que es la primera vez que toco javascript en mi vida.

Mi problema esta en el ultimo SetInterval. Justamente este:

Código
  1. SetInterval(function(){ location.reload(true); }, Math.floor((Math.random() * intervaloMax) + intervaloMin));
  2.  

Lo que busco es recargar la pagina cada 1 o 2 minutos. Probe un monton de formas que habia en internet y nada, no puedo hacerlo andar :-(
El navegador me responde con un rotundo:

Citar
ReferenceError: SetInterval is not defined

Código
  1. var intervaloMin = 60000;
  2. var intervaloMax = 120000;
  3. var nMiliMin = 1800000;
  4. var nMiliMax = 2100000;
  5.  
  6. function arreglarHora(hora, valor) {
  7. return hora+valor-3;
  8. }
  9.  
  10. function refrescar(){
  11. location.reload(true);
  12. }
  13.  
  14. function hacerBump() {
  15.  
  16.        var nHora;
  17. var nMinutos;
  18. var nHoraActual;
  19. var nMinutosActual;
  20. var bActivar = true;
  21.  
  22. // Tomamos la hora del ultimo bump
  23. var tf2UltimoBump = document.getElementsByTagName("time");
  24. var aux = tf2UltimoBump[0].attributes[1].value;
  25. var tiempo = aux.substr(15);
  26. // --------------------------------
  27.  
  28. nHora = parseInt(tiempo, 10);
  29.  
  30. if(nHora <= 9)
  31. nMinutos = parseInt(tiempo[2]+tiempo[3], 10);
  32. else
  33. nMinutos = parseInt(tiempo[3]+tiempo[4], 10);
  34.  
  35.    if(nHora < 12)
  36. nHora = arreglarHora(nHora, 0);
  37.    else
  38.        nHora = arreglarHora(nHora, 12);
  39.  
  40. var date =  new Date();
  41. nHoraActual = date.getHours();
  42. nMinutosActual = date.getMinutes();
  43.  
  44. var nHoraAux, nMinAux;
  45. if(nMinutosActual - nMinutos < 0){
  46. nMinAux = (nMinutosActual - nMinutos) + 60;
  47.            nHoraAux = (nHoraActual - nHora) - 1;
  48.            nMinAux += nHoraAux*60;
  49. }
  50. else{
  51. nMinAux = (nMinutosActual - nMinutos);
  52.            nHoraAux = (nHoraActual - nHora);
  53.            nMinAux += nHoraAux*60;
  54.       }
  55.  
  56.    if(nMinAux >= 30)
  57.        bActivar = true; // Pasaron 30 min? mandale mecha
  58.    else
  59.        bActivar = false;    
  60.  
  61. if(bActivar == true){
  62. var tf2Bump = document.getElementsByClassName("trade_bump"); // Le añadimos el atributo
  63. var atributoId = document.createAttribute("id"); // ID al boton
  64. atributoId.nodeValue = "botonbump"; // para utilizar el metodo click
  65. tf2Bump[0].attributes.setNamedItem(atributoId); // en el mismo.
  66.  
  67. var idBoton = document.getElementById("botonbump");
  68. idBoton.click();
  69.  
  70.     bActivar = false;
  71.        location.reload(true);
  72. SetInterval("hacerBump();", Math.floor((Math.random() * nMiliMax) + nMiliMin));
  73.    }
  74.    else{
  75.        SetInterval(function(){ location.reload(true); }, Math.floor((Math.random() * intervaloMax) + intervaloMin));
  76.    }
  77. }
  78.  
  79. hacerBump();

Recurro a ustedes, genios de la informática y la programación porque esto me esta desmotivando, no puedo creer que una simple linea me vuelva loco!!
5  Programación / Programación C/C++ / [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.  
6  Programación / Programación C/C++ / [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. }
7  Programación / Programación C/C++ / [Consulta] Vector de objectos en: 8 Agosto 2013, 23:35 pm
Buenas, hoy ando con la duda de como llenar el vector con instancias de un objecto en este caso el objeto Cartones.

La clase es esta:

Código
  1. #ifndef CARTONES_H_INCLUDED
  2. #define CARTONES_H_INCLUDED
  3.  
  4. #include <vector.h>
  5. #include <stdlib.h>
  6. #include <fstream.h>
  7.  
  8. class Cartones{
  9.    private:
  10.        fstream fArchivo;
  11.        char *cNumeros;
  12.        int iRangoInicio, iRangoFinal;
  13.        int iCantNumeros;
  14.        int iNumAcertadosMin, iNumAcertadosMax;
  15.        int iNumSerie;
  16.        int iCantNumerosAcertados;
  17.  
  18.    public:
  19.        Cartones(int iRangoInicio, int iRangoFinal, int iCantNumeros);
  20.        ~Cartones();
  21.        void generarNumerosDeCarton();
  22.        void guardarCartonAlArchivo(fstream &archivo);
  23.        void leerCartonDesdeArchivo(fstream &archivo);
  24.        int compararCartones(Cartones carton);
  25.  
  26.        // Getters & Setters
  27.        void setNumSerie(int iNumSerie);
  28.        void setCantNumerosAcertados(int iCantNumerosAcertados);
  29.        char* getNumeros();
  30.        int getCantNumerosAcertados();
  31.        int getNumSerie();
  32.        int getCantNumeros();
  33. };
  34.  
  35. Cartones::Cartones(int iRangoInicio, int iRangoFinal, int iCantNumeros){
  36.    this->iRangoInicio = iRangoInicio;
  37.    this->iRangoFinal = iRangoFinal;
  38.    this->iCantNumeros = iCantNumeros;
  39.    this->cNumeros = new char[iRangoFinal];
  40. }
  41.  
  42. Cartones::~Cartones(){
  43.    delete[](this->cNumeros);
  44.    this->cNumeros = NULL;
  45. }
  46.  
  47. void Cartones::setNumSerie(int iNumSerie){this->iNumSerie = iNumSerie;}
  48. void Cartones::setCantNumerosAcertados(int iCantNumerosAcertados){this->iCantNumerosAcertados = iCantNumerosAcertados;}
  49. char* Cartones::getNumeros(){return this->cNumeros;}
  50. int Cartones::getNumSerie(){return this->iNumSerie;}
  51. int Cartones::getCantNumeros(){return this->iCantNumeros;}
  52. int Cartones::getCantNumerosAcertados(){return this->iCantNumerosAcertados;}
  53.  
  54. void Cartones::generarNumerosDeCarton(){
  55.    int i = 0, aux = 0;
  56.    while(i < this->iCantNumeros){
  57.        aux = random(this->iRangoFinal);
  58.        if(aux < this->iRangoFinal && this->cNumeros[aux] != 'X'){
  59.            this->cNumeros[aux] = 'X';
  60.            i++;
  61.        }
  62.    }
  63. }
  64.  
  65. int Cartones::compararCartones(Cartones carton){
  66.    int coincidencias = 0;
  67.    for(int i=0; i<iRangoFinal; i++){
  68.        if(this->cNumeros[i] == 'X' && carton.cNumeros[i] == 'X'){
  69.            carton.cNumeros[i] = 'A';
  70.            coincidencias++;
  71.        }
  72.    }
  73.        return coincidencias;
  74. }
  75.  
  76. void Cartones::leerCartonDesdeArchivo(fstream &archivo){
  77.    int serie, aux;
  78.    if(archivo.is_open() && archivo.gcount() > this->iCantNumeros){
  79.        archivo >> serie;
  80.        this->setNumSerie(serie);
  81.        for(int i=0; i<this->iCantNumeros; i++){
  82.            archivo >> aux;
  83.            this->cNumeros[aux-1] = 'A';
  84.        }
  85.    }
  86. }
  87.  
  88. void Cartones::guardarCartonAlArchivo(fstream &archivo){
  89.    if(archivo.is_open()){
  90.        archivo << this->iNumSerie << endl;
  91.        for(int i=0; i<this->iRangoFinal; i++)
  92.            if(this->cNumeros[i] == 'A')
  93.                archivo << i+1 << " ";
  94.    }
  95. }
  96.  
  97. #endif // CARTONES_H_INCLUDED
  98.  

¿Como es la manera correcta de llenar el vector con las instancias?
Asi lo tengo declarado actualmente:

Código
  1. int cantCartones = Edit1->Text.ToInt();
  2.    vector<Cartones> vCartones;
  3.  
  4.    fioArchivo.open("cartones.in");
  5.    for(int i=0; i<cantCartones; i++){
  6.        Cartones cCarton(1, 25, 15);
  7.        cCarton.setNumSerie(i);
  8.        cCarton.generarNumerosDeCarton();
  9.        cCarton.guardarCartonAlArchivo(fioArchivo);
  10.        vCartones.push_back(cCarton);
  11.    }
  12.    fioArchivo.close();

y me esta tirando el siguiente error:
Citar
[C++ Error] _construct.h(85): E2285 Could not find a match for 'Cartones::Cartones(const Cartones)'
8  Programación / Java / Problema con Setter en: 4 Julio 2013, 01:33 am
Tengo el siguiente codigo el cual llena cartones de loteria. Lo mas raro es que el compilador me tira error en la linea 17, el cual es un setter (c.SetNumSerie) que asigna el numero de carton, los cartones en total son 500.
La verdad es que es la primera vez que hago algo en este lenguaje y no tengo ni la mas minima idea de lo que puede ser.

Código
  1. Numeros[] cCartones = new Numeros[numCartones];
  2.  
  3. int i = 0;
  4. for(Numeros c : cCartones){
  5. i++;
  6. c.setNumSerie(i);
  7. c.generarNumeros(cantNumeros);
  8. }

Toda respuesta sera bienvenida.
Gracias anticipadamente.
9  Programación / Programación C/C++ / [Ayuda] Hilos - basico en: 20 Junio 2013, 18:35 pm
Buenos dias damas y caballeros.
Necesitaria a alguna alma generosa que me oriente como hacer esto.
Lo unico que necesito es crear un hilo y ejecutar una funcion.
Lo hice de forma global y anda todo bien, el problema viene cuando lo quiero hacer en una clase.

El codigo de la discordia:

Código
  1. DWORD WINAPI Socket::ThreadFunc(LPVOID){
  2.    recibirOrdenes();
  3.    return 0;
  4. }
  5.  
  6. void Socket::SubProceso(){
  7.    DWORD dwThreadId;
  8.    CreateThread(NULL, 0, ThreadFunc, 0, 0, &dwThreadId);
  9. }

Error:

Citar
error: argument of type 'DWORD (Socket:: )(void*)' does not match 'DWORD (*)(void*)'|

Me estoy poniendo nervioso por lo cual decidi acudir a ustedes.
Gracias de antemano.
10  Programación / Programación C/C++ / [Consulta] ¿Es posible? en: 19 Febrero 2013, 21:38 pm
Ya habran oido de que hay un problema con Windows 7 sacando capturas de pantalla en juegos que estan siendo ejecutados en pantalla completa.
El juego tiene su propia funcion de sacar screenshots y anda perfectamente.
A lo que voy es: ¿Se puede usarse esa funcion inyectandose en el proceso?
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines