Ejemplo n.º 1
0
void	do_sierpinski(short unsigned* shm, short unsigned* local,int* n_gen)
{
	int x,y;
	int des,sin,su;

	inuso=P(sem_id,0);
	
	if( (* n_gen) == 0 ) 
	{	// inizializza la matrice con una sola cella viva
		for ( y=0; y < N_Y * N_X; ++y )	local[y]=0;
		
		fiat( random_in_range(0,N_X), random_in_range(0,N_Y), local);
		++(* n_gen);
	} else
	{
		for( y=0; y < N_Y * N_X; ++y )	local[y]=shm[y];
	}

	for( y=0; y < N_Y; ++y )
	{ 
		for( x=0; x < N_X; ++x )
		{
			// rendiamo l'universo un toro \m/
			if(x==0)	sin=N_X-1;
			else		sin=x-1;
			if(x==N_X-1)	des=0;
			else		des=x+1;
			if(y==0)	su=N_Y-1;	
			else		su=y-1;
	
			switch( get_stato(x,y,local) )
			{
				case MORTO:
					if	// XOR
					(	(get_stato(sin,su,local)==VIVO)
					 ^	(get_stato(des,su,local)==VIVO)
					 ) 
						fiat(x,y,shm);
					else
						uccidi(x,y,shm);
					break;
				case VIVO:
					if	// condizione da rivedere
					(	(get_stato(sin,su,local)==VIVO)
					 &&	(get_stato(des,su,local)==VIVO)
					 ) 
						uccidi(x,y,shm);
					else
						fiat(x,y,shm);
					break;
				defaut:
					;
					break;
				}
			}
		} 
	
	++(*n_gen);
	inuso=V(sem_id,0);
}
Ejemplo n.º 2
0
void	init_from_file(short unsigned * m,short unsigned * from, 
	int * n_gen, int xx, int yy)
{
	int x,y;
	int i,j;
	int first_x = (N_X-xx)/2;
	int first_y = (N_Y-yy)/2;

	for(i=0; i<N_X; ++i)
	{
		for(j=0; j<N_Y; ++j)
		{
			if( x>=first_x && x<=(N_X-first_x)
				&& y>=first_y && y<=(N_Y-first_y))
			{
				if( get_stato(x-first_x,y-first_y,from) 
					== VIVO )
					fiat(x,y,m);
				else
					uccidi(x,y,m);

			} else 
			{
				uccidi(x,y,m);
			}
		}
	}

	*n_gen = 0;
}
Ejemplo n.º 3
0
void	evolvi (short unsigned* shm, short unsigned* local,int* n_gen,
		short* s,short size_s,short* b,short size_b)
{

	int x, y;
	short vivi;
	
	P(sem_id_counter,0);
	inuso=P(sem_id,0);
	
	for( y=0; y < N_Y; ++y )
	{
		for( x=start_x; x < stop_x; ++x )
		{
			vivi=vicini_vivi(x,y,local);

			switch( get_stato(x,y,local)) 
			{
				case VIVO:	// S
					if( in_array(vivi,s,size_s) )
						fiat(x,y,shm);
					else
						uccidi(x,y,shm);
					break;
				case MORTO:	// B
					if( in_array(vivi,b,size_b) )
						fiat(x,y,shm);
					else
						uccidi(x,y,shm);
					break;
				default:	// ?
					printf("ERROR");
					break;
			}
		}
	}
	
	inuso=V(sem_id,0);
	//Z(sem_id_counter,0);
}
Ejemplo n.º 4
0
int main()
{
	Reception lobby; 
	Station her;

	lobby.addStation(her);

	lobby.opretKunde("Gorm Adolf", "Hans Tausensgade 117", 12345678, "frelsthæ[email protected]");
	lobby.opretKunde("Bjarne Lemming", "H.C. Andersens Boulevard 2", 28374615, "djæ[email protected]");
	lobby.opretKunde("Brit Dorit", "Albanigade 13", 27654310, "*****@*****.**");
	lobby.opretKunde("Jarl Dingo", "Niels Bohr's Allé 1", 34928165, "*****@*****.**");

	Bil mercedes("Smadrekassen");
	Bil fiat("Kunstværket");
	Bil skoda("Damemagneten");
	Bil mitsubishi("Flagskibet");
	Bil chevrolet("Den flyvende hollænder");

	lobby.addBil(mercedes);
	lobby.addBil(fiat);
	lobby.addBil(skoda);
	lobby.addBil(mitsubishi);
	lobby.addBil(chevrolet);

	lobby.modtagBil("Smadrekassen");
	lobby.modtagBil("Kunstværket");
	lobby.modtagBil("Damemagneten");
	lobby.modtagBil("Flagskibet");
	lobby.modtagBil("Den flyvende hollænder");

	lobby.makeReservation("*****@*****.**", "Flagskibet", 19870905, 19871001);
	lobby.makeReservation("*****@*****.**", "Flagskibet", 20010513, 20010602);
	lobby.makeReservation("frelsthæ[email protected]", "Flagskibet", 20010603, 20010608);
	lobby.makeReservation("djæ[email protected]", "Flagskibet", 20011222, 20020108);
	lobby.makeReservation("*****@*****.**", "Flagskibet", 20020217, 20020602);

	lobby.hentBil("*****@*****.**");
	lobby.bilAfleveret("Flagskibet");

	lobby.hentBil("*****@*****.**");
	lobby.bilAfleveret("Flagskibet");

	lobby.hentBil("frelsthæ[email protected]");

	lobby.getStationer()[0].findBilStation("Flagskibet")->getKalender().printTakenDates();

	lobby.makeReservation("*****@*****.**","Flagskibet",20010528,20010604);

	lobby.makeReservation("djæ[email protected]", "Smadrekassen", 20010814, 20010908);

	return 0;
}