SemaphoreSetDistribuido::SemaphoreSetDistribuido(std::vector<unsigned short> & numeros_de_semaforo,
	const std::string & directorio_de_trabajo, const std::string & nombre_app, const std::string & nombre_grupo,
	char id, int cantidad_sems, bool create)
	: nombre_recurso(nombre_grupo), cantidad_de_semaforos(cantidad_sems)
{
	std::string prefijo_archivo;
	prefijo_archivo = std::string(directorio_de_trabajo).append(PREFIJO_RECURSO).append(nombre_grupo);
	char numero [5];
	unsigned short valor;

	if (cantidad_de_semaforos > 125) {
		throw GenericError("Cannot allocate %d semaphores, max 125", cantidad_de_semaforos);
	}

	std::vector<unsigned short> valores(2 * cantidad_de_semaforos, 0);

	create_if_not_exists(std::string(prefijo_archivo).append(POSTFIJO_LCK).c_str());

	if (create) {
		control = ControlTokens::get_instance(directorio_de_trabajo, true);
		semaforos = new SemaphoreSet(valores, std::string(prefijo_archivo).append(POSTFIJO_LCK).c_str(), id, 0664);
	} else {
		control = ControlTokens::get_instance(directorio_de_trabajo);
		semaforos = new SemaphoreSet(std::string(prefijo_archivo).append(POSTFIJO_LCK).c_str(), id, 0);
	}
	for (size_t i = 0 ; i < numeros_de_semaforo.size() ; i++) {

		valor = numeros_de_semaforo [i];
		sprintf(numero, "%d", valor);

		lanzar_comunicacion(directorio_de_trabajo, nombre_app,
			std::string(directorio_de_trabajo).append(PATH_LOCAL_BROKER_LIST_FILE).c_str(),
			std::string(nombre_grupo).append(numero), id, 0, valor);
	}
}
Ejemplo n.º 2
0
Archivo: BD.cpp Proyecto: tureba/CBIR
QVector<float> BD::extrairHistograma(QImage imagem)
{
	QVector<float> valores(256, 0);

	for (int i = 0; i < imagem.width(); i++)
		for (int j = 0; j < imagem.height(); j++)
			valores[qGray(imagem.pixel(i,j))]++;

	return valores;

}
Ejemplo n.º 3
0
int valores(int n){

    int r=0;

    if(valoresInmediatos[n]!=0 && n!=0){
        r=valoresInmediatos[n];
    }else if(n==0){
        r=0;
    }else if(n==1){
        r=1;
    }else if(n%2==0){
        r=valores(n/2);
        valoresInmediatos[n]=r;
    }else if(n%2==1){
        r=valores(n-1)+valores(n+1);
        valoresInmediatos[n]=r;
    }

    return r;

}
Ejemplo n.º 4
0
void Tamagotchi::on_SaludB_clicked()
{
    if(create_window.granja->getPos(buscar(getNombre()))->enfermedad > 0 &&
            create_window.granja->getPos(buscar(getNombre()))->enfermedad <= 100)
    {
        if(enfermedades->getPrimero())
        {
            enfermedades->sacar();
            if(enfermedades->getPrimero())
                create_window.granja->getPos(buscar(getNombre()))->enfermedad = enfermedades->getPrimero()->valor;
            else
                create_window.granja->getPos(buscar(getNombre()))->enfermedad = 0;
        }
    }
    valores(getNombre());
}
Ejemplo n.º 5
0
int main(){

    int n;
    int i=0;

    valoresInmediatos[0]=0;
    valoresInmediatos[1]=1;

    scanf("%i",&n);

    while(n!=0){
        for(i=2;i<=n;i++){
            valoresInmediatos[i]=valores(i);
        }
        printf("%i\n",mayores(n));
        scanf("%i",&n);
    }
    return 0;
}
Ejemplo n.º 6
0
void Histograma::populate(QImage *img)
{
    QwtPlotGrid *grid = new QwtPlotGrid;
    grid->enableX(false);
    grid->enableY(true);
    grid->enableXMin(true);
    grid->enableYMin(true);
    grid->setMajorPen(QPen(Qt::black, 0, Qt::DotLine));
    grid->setMinorPen(QPen(Qt::gray, 0, Qt::DotLine));
    grid->attach(this);

    int cinza, mQtd = 0;
    int x, y;
    // Quantidade de pontos de 0 a 255
    const int pts = 256;

    QVector<float> valores(pts);

    // inicializa os valores com 0
    for (int i = 0; i < pts; i++)
            valores[i] = 0.0;

    for (x = 0; x < img->width(); x++) {
        for (y = 0; y < img->height(); y++) {
            cinza = qGray(img->pixel(QPoint(x,y)));
            valores[cinza]++;

            if (valores[cinza] > mQtd)
                mQtd = valores[cinza];
        }
    }

    Histogram *hist = new Histogram("", Qt::black);
    hist->setValues(pts, &valores);

    hist->attach(this);
    this->replot();
}
Ejemplo n.º 7
0
void Principal::random(){

    this->setLog(QString("Embaralhando..."));
    vector <vector<int> > valores(9);

    valores.at(0).push_back(4);
    valores.at(0).push_back(1);
    valores.at(0).push_back(2);
    valores.at(0).push_back(5);
    valores.at(0).push_back(7);
    valores.at(0).push_back(0);
    valores.at(0).push_back(6);
    valores.at(0).push_back(8);
    valores.at(0).push_back(3);

    valores.at(1).push_back(5);
    valores.at(1).push_back(1);
    valores.at(1).push_back(4);
    valores.at(1).push_back(0);
    valores.at(1).push_back(6);
    valores.at(1).push_back(2);
    valores.at(1).push_back(7);
    valores.at(1).push_back(8);
    valores.at(1).push_back(3);

    valores.at(2).push_back(8);
    valores.at(2).push_back(2);
    valores.at(2).push_back(4);
    valores.at(2).push_back(6);
    valores.at(2).push_back(7);
    valores.at(2).push_back(3);
    valores.at(2).push_back(5);
    valores.at(2).push_back(0);
    valores.at(2).push_back(1);


    valores.at(3).push_back(2);
    valores.at(3).push_back(4);
    valores.at(3).push_back(5);
    valores.at(3).push_back(7);
    valores.at(3).push_back(3);
    valores.at(3).push_back(0);
    valores.at(3).push_back(6);
    valores.at(3).push_back(1);
    valores.at(3).push_back(8);

    valores.at(4).push_back(0);
    valores.at(4).push_back(1);
    valores.at(4).push_back(5);
    valores.at(4).push_back(3);
    valores.at(4).push_back(8);
    valores.at(4).push_back(2);
    valores.at(4).push_back(4);
    valores.at(4).push_back(7);
    valores.at(4).push_back(6);

    valores.at(5).push_back(6);
    valores.at(5).push_back(7);
    valores.at(5).push_back(4);
    valores.at(5).push_back(3);
    valores.at(5).push_back(0);
    valores.at(5).push_back(2);
    valores.at(5).push_back(5);
    valores.at(5).push_back(1);
    valores.at(5).push_back(8);

    valores.at(6).push_back(5);
    valores.at(6).push_back(1);
    valores.at(6).push_back(0);
    valores.at(6).push_back(7);
    valores.at(6).push_back(8);
    valores.at(6).push_back(2);
    valores.at(6).push_back(4);
    valores.at(6).push_back(3);
    valores.at(6).push_back(6);

    int posicao;
    int vezes = 8;
    while(vezes != 0){
        vezes--;
        posicao = rand() % 7;
        this->setNewDisplayPosition(valores[posicao][0],valores[posicao][1],valores[posicao][2],valores[posicao][3],valores[posicao][4],valores[posicao][5],valores[posicao][6],valores[posicao][7],valores[posicao][8]);
        this->delay(150);
    }

    this->setNewDisplayPosition(3,1,2,4,5,8,6,0,7);
}
Ejemplo n.º 8
0
void Tamagotchi::bajarVida()
{
    int dano = ui->BarraComida->value() + ui->BarraDormir->value() + ui->BarraHigiene->value() + ui->BarraSalud->value();
    create_window.granja->getPos(buscar(getNombre()))->vida = 100 - (dano * 0.25);
    valores(getNombre());
}
Ejemplo n.º 9
0
void Tamagotchi::pierdeVida()
{
    switch(rand()%4)
        {
            case 0:
                if(create_window.granja->getPos(buscar(getNombre()))->defecar >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->defecar < 500)
                {
                    if(desechos->getPrimero())
                    {
                        if(desechos->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(desechos->getPrimero()->valor+10);
                            desechos->meter(tempo);
                        }
                    }
                    else if(!desechos->getPrimero())
                    {
                        defecar = new NodoT(30);
                        desechos->meter(defecar);
                    }
                    create_window.granja->getPosi(buscar(getNombre()))->defecar = desechos->getPrimero()->valor;
                }
                valores(getNombre());
            break;


            case 1:
                if(create_window.granja->getPos(buscar(getNombre()))->comer >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->comer < 500)
                {
                    if(hambre->getPrimero())
                    {
                        if(hambre->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(hambre->getPrimero()->valor+10);
                            hambre->meter(tempo);
                        }
                    }
                    else if(!hambre->getPrimero())
                    {
                        comer = new NodoT(30);
                        hambre->meter(comer);
                    }
                    create_window.granja->getPos(buscar(getNombre()))->comer = hambre->getPrimero()->valor;
                }
                valores(getNombre());
            break;

            case 2:
                if(create_window.granja->getPos(buscar(getNombre()))->sanar >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->sanar < 100)
                {
                    if(enfermedades->getPrimero())
                    {
                        if(enfermedades->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(enfermedades->getPrimero()->valor+10);
                            enfermedades->meter(tempo);
                        }
                    }
                    else if(!enfermedades->getPrimero())
                    {
                        sanar = new NodoT(10);
                        enfermedades->meter(sanar);
                    }
                    create_window.granja->getPos(buscar(getNombre()))->sanar = enfermedades->getPrimero()->valor;
                }
                valores(getNombre());
            break;

            case 3:
                if(create_window.granja->getPos(buscar(getNombre()))->dormir >= 0 &&
                        create_window.granja->getPos(buscar(getNombre()))->dormir < 100)
                {
                    if(sueno->getPrimero())
                    {
                        if(sueno->getPrimero()->valor >= 0)
                        {
                            NodoT* tempo = new NodoT(sueno->getPrimero()->valor+10);
                            sueno->meter(tempo);
                        }
                    }
                    else if(!sueno->getPrimero())
                    {
                        dormir = new NodoT(10);
                        sueno->meter(dormir);
                    }
                    create_window.granja->getPos(buscar(getNombre()))->sueno = sueno->getPrimero()->valor;
                }
                valores(getNombre());
            break;
        }
}