Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - bemone

#11
Cita de: engelx en 18 Marzo 2014, 05:06 AM
XD no está declarado porque no es
Código (javascript) [Seleccionar]
SetInterval(...)
es
Código (javascript) [Seleccionar]
setInterval(...)

los nombres de las funciones inician en minusculas, y en JScript para separar las otras palabras luego de la primera van capitalizadas

Código (javascript) [Seleccionar]
indexOf, parseInt, getElementsByClassName, setNamedItem...

creo que ya tienes la idea! XD

Creo que tengo lag mental a esta hora de la noche.
Lo cambie y funciono  :o pero como es posible que el SetInterval de arriba me funcione y el de abajo no? Gracias por la rapidez de la respuesta. Actualmente uno esta puesto con mayuscula y el otro no  :huh: :huh: :huh:
#12
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 (javascript) [Seleccionar]

SetInterval(function(){ location.reload(true); }, Math.floor((Math.random() * intervaloMax) + intervaloMin));


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:

CitarReferenceError: SetInterval is not defined

Código (javascript) [Seleccionar]

var intervaloMin = 60000;
var intervaloMax = 120000;
var nMiliMin = 1800000;
var nMiliMax = 2100000;

function arreglarHora(hora, valor) {
return hora+valor-3;
}

function refrescar(){
location.reload(true);
}

function hacerBump() {

       var nHora;
var nMinutos;
var nHoraActual;
var nMinutosActual;
var bActivar = true;

// Tomamos la hora del ultimo bump
var tf2UltimoBump = document.getElementsByTagName("time");
var aux = tf2UltimoBump[0].attributes[1].value;
var tiempo = aux.substr(15);
// --------------------------------

nHora = parseInt(tiempo, 10);

if(nHora <= 9)
nMinutos = parseInt(tiempo[2]+tiempo[3], 10);
else
nMinutos = parseInt(tiempo[3]+tiempo[4], 10);

   if(nHora < 12)
nHora = arreglarHora(nHora, 0);
   else
       nHora = arreglarHora(nHora, 12);

var date =  new Date();
nHoraActual = date.getHours();
nMinutosActual = date.getMinutes();

var nHoraAux, nMinAux;
if(nMinutosActual - nMinutos < 0){
nMinAux = (nMinutosActual - nMinutos) + 60;
           nHoraAux = (nHoraActual - nHora) - 1;
           nMinAux += nHoraAux*60;
}
else{
nMinAux = (nMinutosActual - nMinutos);
           nHoraAux = (nHoraActual - nHora);
           nMinAux += nHoraAux*60;
      }
   
   if(nMinAux >= 30)
       bActivar = true; // Pasaron 30 min? mandale mecha
   else
       bActivar = false;    

if(bActivar == true){
var tf2Bump = document.getElementsByClassName("trade_bump"); // Le añadimos el atributo
var atributoId = document.createAttribute("id"); // ID al boton
atributoId.nodeValue = "botonbump"; // para utilizar el metodo click
tf2Bump[0].attributes.setNamedItem(atributoId); // en el mismo.

var idBoton = document.getElementById("botonbump");
idBoton.click();
   
    bActivar = false;
       location.reload(true);
SetInterval("hacerBump();", Math.floor((Math.random() * nMiliMax) + nMiliMin));
   }
   else{
       SetInterval(function(){ location.reload(true); }, Math.floor((Math.random() * intervaloMax) + intervaloMin));
   }
}

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!!
#13
Cita de: dega1980 en 15 Marzo 2014, 10:57 AM
Siempre me he preguntado comp hacen los videos estos que cuando le das para verlo , no te deja a no ser que lo compartas o le des a like
alguien sabe como funciona?

Con la api de facebook!
#14
Cita de: eferion 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.

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 (cpp) [Seleccionar]
AnsiString Cartones::devolverNumeros(){
   this->asNumeros = "";
   for(unsigned int i=0; i<this->vsNumeros.size(); i++){
       if(this->vsNumeros[i] == 'A' || this->vsNumeros[i] == 'X')
           this->asNumeros += AnsiString(i+1) + " ";
   }
       return this->asNumeros;
}


Gracias!!
#15
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 (cpp) [Seleccionar]
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Cartones.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

TFileStream *ioArchivo;
Cartones *cCarton;
vector<Cartones *> vCartones;
int nCartones;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    Memo1->Lines->Clear();
    Memo2->Lines->Clear();
    ioArchivo = new TFileStream("cartones.txt", fmCreate);

    int cantCartones = nCartones;

    for(int i=0; i<cantCartones; i++){
        cCarton = new Cartones(1, 25, 15);
        cCarton->setNumSerie(i+1);
        cCarton->generarNumerosDeCarton();
        vCartones.push_back(cCarton);
    }

    // ----------------------- ACA LOS MUESTRA BIEN --------------------------
    for(unsigned int i=0; i<vCartones.size(); i++){
        Memo1->Lines->Append(AnsiString(vCartones[i]->getNumSerie()));
        Memo1->Lines->Append(vCartones[i]->devolverNumeros()); //ESTO
    }

    for(unsigned int i=0; i<vCartones.size(); i++){
        Memo2->Lines->Append(AnsiString(vCartones[i]->getNumSerie()));
        Memo2->Lines->Append(vCartones[i]->devolverNumeros());
    }

    ioArchivo->WriteComponent(Memo2);
    delete ioArchivo;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    randomize();
    nCartones = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    nCartones += 3;
    Label1->Caption = AnsiString(nCartones);
    Label2->Caption = AnsiString(nCartones/3);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    Memo1->Lines->Clear();
    Memo2->Lines->Clear();

    ioArchivo = new TFileStream("cartones.txt", fmOpenRead | fmShareExclusive);
    ioArchivo->ReadComponent(Memo2);

    vector<char> vcNumeros(25);
    AnsiString aux;
    int cont = 1, num = 0;

    for(int i=0; i<Memo2->Lines->Count; i+=2){
        cCarton = new Cartones(1, 25, 15);
        cCarton->setNumSerie(Memo2->Lines->Strings[i].ToInt());
        aux = Memo2->Lines->Strings[i+1];
        while(cont <= aux.Length()){
            num = aux[cont];
            if(num >= 1 && num <= 25)
                vcNumeros[num-1] = 'X';

            cont++;
        }

        cCarton->setNumeros(vcNumeros);
        vCartones.push_back(cCarton);
    }

    delete ioArchivo;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
{
    /*Cartones cCartonGanador(1, 25, 15);
    cCartonGanador.generarNumerosDeCarton();
    cCartonGanador.setNumerosEnteros(cCartonGanador.devolverNumeros());
    Memo1->Lines->Append("Carton Ganador: ");
    Memo1->Lines->Append(cCartonGanador.getNumerosEnteros());*/

    // ---------------------- ACA LOS MUESTRA MAL -----------------------
    for(unsigned int i=0; i<vCartones.size(); i++){
        Memo1->Lines->Append(AnsiString(vCartones[i]->getNumSerie()));
        Memo1->Lines->Append(vCartones[i]->devolverNumeros()); //ESTO
    }

    /*int aciertos;
    for(unsigned int i=0; i<vCartones.size(); i++){
        aciertos = vCartones[i]->compararCartones(cCartonGanador);
        vCartones[i]->setCantNumerosAcertados(aciertos);
        vCartones[i]->setNumerosEnteros(vCartones[i]->devolverNumeros());
    }

    int i = 15;
    for(unsigned int j=0; j<vCartones.size(); j++){
        //if(vCartones[j]->getCantNumerosAcertados() == i && i >= 12 && i <= 15){
            Memo1->Lines->Append("Carton: " + AnsiString(vCartones[j]->getNumSerie()) + " Aciertos: " + AnsiString(vCartones[j]->getCantNumerosAcertados()));
            Memo1->Lines->Append(vCartones[j]->getNumerosEnteros());
        //}
            //i--;
    }*/
}
//---------------------------------------------------------------------------
#16
Programación C/C++ / Re: [Ayuda] Vectores
23 Agosto 2013, 17:12 PM
Cita de: amchacon en 23 Agosto 2013, 17:04 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!
#17
Programación C/C++ / Re: [Ayuda] Vectores
23 Agosto 2013, 16:01 PM
Cita de: amchacon en 23 Agosto 2013, 10:02 AM
¿A quien te refieres con vector1? ¿Al vsNumeros?

Por cierto, unos consejos de eficiencia:

Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
int Cartones::compararCartones(const Cartones &ganador){

Por otro lado:

Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
int Cartones::compararCartones(const Cartones &ganador){
    int coincidencias = 0;
    for(unsigned int i=0; i<ganador.getNumeros().size(); i++){
        if(ganador.getNumeros()[i] == 'X' && this->vsNumeros[i] == 'X'){
            this->vsNumeros[i] = 'A';
            coincidencias++;
        }
        else
            this->vsNumeros[i] = 'D';
    }
        return coincidencias;
}
#18
Te recomiendo que leas el libro "Como dejar de ser un lammer en 300 pasos" de Peluchin y "Como tener 2 dedos de frente" de Jorge aka andaaestudiar.
#19
Programación C/C++ / [Ayuda] Vectores
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 (cpp) [Seleccionar]
int Cartones::compararCartones(Cartones ganador){
   int coincidencias = 0;
   vector<char> cartonGanador = ganador.getNumeros();
   for(int i=0; i<cartonGanador.size(); i++){
       if(cartonGanador[i] == 'X' && this->vsNumeros[i] == 'X'){
           this->vsNumeros[i] = 'A';
           coincidencias++;
       }
       else
           this->vsNumeros[i] = 'D';
   }
       return coincidencias;
}

#20
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 (cpp) [Seleccionar]
#ifndef CARTONES_H_INCLUDED
#define CARTONES_H_INCLUDED

#include <vector.h>
#include <stdlib.h>
#include <fstream.h>

class Cartones{
    private:
        fstream fArchivo;
        char *cNumeros;
        int iRangoInicio, iRangoFinal;
        int iCantNumeros;
        int iNumAcertadosMin, iNumAcertadosMax;
        int iNumSerie;
        int iCantNumerosAcertados;

    public:
        Cartones(int iRangoInicio, int iRangoFinal, int iCantNumeros);
        ~Cartones();
        void generarNumerosDeCarton();
        void guardarCartonAlArchivo(fstream &archivo);
        void leerCartonDesdeArchivo(fstream &archivo);
        int compararCartones(Cartones carton);

        // Getters & Setters
        void setNumSerie(int iNumSerie);
        void setCantNumerosAcertados(int iCantNumerosAcertados);
        char* getNumeros();
        int getCantNumerosAcertados();
        int getNumSerie();
        int getCantNumeros();
};

Cartones::Cartones(int iRangoInicio, int iRangoFinal, int iCantNumeros){
    this->iRangoInicio = iRangoInicio;
    this->iRangoFinal = iRangoFinal;
    this->iCantNumeros = iCantNumeros;
    this->cNumeros = new char[iRangoFinal];
}

Cartones::~Cartones(){
    delete[](this->cNumeros);
    this->cNumeros = NULL;
}

void Cartones::setNumSerie(int iNumSerie){this->iNumSerie = iNumSerie;}
void Cartones::setCantNumerosAcertados(int iCantNumerosAcertados){this->iCantNumerosAcertados = iCantNumerosAcertados;}
char* Cartones::getNumeros(){return this->cNumeros;}
int Cartones::getNumSerie(){return this->iNumSerie;}
int Cartones::getCantNumeros(){return this->iCantNumeros;}
int Cartones::getCantNumerosAcertados(){return this->iCantNumerosAcertados;}

void Cartones::generarNumerosDeCarton(){
    int i = 0, aux = 0;
    while(i < this->iCantNumeros){
        aux = random(this->iRangoFinal);
        if(aux < this->iRangoFinal && this->cNumeros[aux] != 'X'){
            this->cNumeros[aux] = 'X';
            i++;
        }
    }
}

int Cartones::compararCartones(Cartones carton){
    int coincidencias = 0;
    for(int i=0; i<iRangoFinal; i++){
        if(this->cNumeros[i] == 'X' && carton.cNumeros[i] == 'X'){
            carton.cNumeros[i] = 'A';
            coincidencias++;
        }
    }
        return coincidencias;
}

void Cartones::leerCartonDesdeArchivo(fstream &archivo){
    int serie, aux;
    if(archivo.is_open() && archivo.gcount() > this->iCantNumeros){
        archivo >> serie;
        this->setNumSerie(serie);
        for(int i=0; i<this->iCantNumeros; i++){
            archivo >> aux;
            this->cNumeros[aux-1] = 'A';
        }
    }
}

void Cartones::guardarCartonAlArchivo(fstream &archivo){
    if(archivo.is_open()){
        archivo << this->iNumSerie << endl;
        for(int i=0; i<this->iRangoFinal; i++)
            if(this->cNumeros[i] == 'A')
                archivo << i+1 << " ";
    }
}

#endif // CARTONES_H_INCLUDED


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

Código (cpp) [Seleccionar]
int cantCartones = Edit1->Text.ToInt();
    vector<Cartones> vCartones;

    fioArchivo.open("cartones.in");
    for(int i=0; i<cantCartones; i++){
        Cartones cCarton(1, 25, 15);
        cCarton.setNumSerie(i);
        cCarton.generarNumerosDeCarton();
        cCarton.guardarCartonAlArchivo(fioArchivo);
        vCartones.push_back(cCarton);
    }
    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)'