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); }
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; }
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); }
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; }