コード例 #1
0
ファイル: gui_user_menu.c プロジェクト: pelrun/CHDK
void gui_load_user_menu_script(const char *fn) 
{
    if (fn) {
#ifdef OPT_SCRIPTING
		script_load(fn, SCRIPT_LOAD_LAST_PARAMSET );
		load_params_names_cfg();
#endif

        // exit menu system on the assumption the user will want to run the script just loaded

        gui_set_mode(&altGuiHandler);
        kbd_reset_autoclicked_key();
        rinit();
    }
}
コード例 #2
0
ファイル: infin.c プロジェクト: tperraut/42
void	infin(char **av)
{
	int	**in;
	int	*r;
	int	l12[2];
	int	i;
	int	j;
	int	k;

	j = -1;
	l12[0] = ft_strlen(av[1]);
	l12[1] = ft_strlen(av[2]);
	r = rinit(l12[0], l12[1]);
	if (!l12[0] || !l12[1])
		write(1, "0\n", 2);
	else if (av[1][0] == '-' && av[2][0] == '-')
		in = ft_strtotab(&av[1][1], &av[2][1], --l12[0], --l12[1]);
	else if (av[1][0] == '-'
			&& (in = ft_strtotab(&av[1][1], av[2], --l12[0], l12[1])))
		write(1, "-", 1);
	else if (av[2][0] == '-'
			&& (in = ft_strtotab(av[1], &av[2][1], l12[0], --l12[1])))
		write(1, "-", 1);
	else
		in = ft_strtotab(av[1], av[2], l12[0], l12[1]);
	if (!in || !r)
		return ();
	while (++j < len2)
	{
		k = j + 1;
		i = -1
		while (++i < len1 && --k >= 0)
		{
			if (j = 0)
			r[j * len1 + i] += in[i][j - k] + (r[j * len1 + i - 1]) / 10;
			r[j * len1 + i - 1] = r[j * len1 + i - 1] % 10;
		}
	}
	return ();
}
コード例 #3
0
ファイル: main.c プロジェクト: OS2World/APP-SCIENCE-LVB
int main(void)
{
    long i;				/* loop counter */
    long rand_val;			/* random number */
    long first_rand_val;		/* first random number */
    time_t tim;				/* system time */
    unsigned long ul_seed;		/* seed, from system time */
    Lvb_bool all_same = LVB_TRUE;	/* all 'random' values same */

    lvb_initialize();

    /* seed random number generator from system clock */
    tim = time(NULL);
    lvb_assert(tim != -1);
    ul_seed = (unsigned long) tim;
    ul_seed = ul_seed % (1UL + (unsigned long) MAX_SEED);
    lvb_assert(ul_seed <= MAX_SEED);
    rinit((int) ul_seed);
 
    first_rand_val = randpint(UPPER_LIM);
    for (i = 0; i < LOOP_CNT; i++)
    {
        rand_val = randpint(UPPER_LIM);
	lvb_assert(rand_val <= UPPER_LIM);
	lvb_assert(rand_val >= 0);
	if (rand_val != first_rand_val)
	    all_same = LVB_FALSE;
    }

    if (all_same == LVB_FALSE)
    {
        printf("test passed\n");
	return EXIT_SUCCESS;
    }
    else
    {
        printf("test failed\n");
	return EXIT_FAILURE;
    }
}
コード例 #4
0
ファイル: main.c プロジェクト: siebenmann/sam
void
main(int argc, char *argv[])
{
	int i, got, scr;
	Text *t;
	Rectangle r;
	Flayer *nwhich;

	int fwdbut;

	if (argc >= 3 && strcmp(argv[1], "-r") == 0)
	{
		machine = argv[2];
	}

	getscreen(argc, argv);
	fwdbut = scrollfwdbut();
	iconinit();
	initio();
	scratch = alloc(100*RUNESIZE);
	nscralloc = 100;
	r = screen.r;
	r.max.y = r.min.y+Dy(r)/5;
	flstart(screen.clipr);
	rinit(&cmd.rasp);
	flnew(&cmd.l[0], stgettext, 1, &cmd);
	flinit(&cmd.l[0], r, font);
	cmd.nwin = 1;
	which = &cmd.l[0];
	cmd.tag = Untagged;
	outTs(Tversion, VERSION);
	startnewfile(Tstartcmdfile, &cmd);

	got = 0;
	for(;;got = waitforio()){
		if(hasunlocked && RESHAPED())
			reshape();
		if(got&RHost)
			rcv();
		if(got&RExtern){
			for(i=0; cmd.l[i].textfn==0; i++)
				;
			current(&cmd.l[i]);
			flsetselect(which, cmd.rasp.nrunes, cmd.rasp.nrunes);
			type(which, RExtern);
		}
		if(got&RKeyboard)
			if(which)
				type(which, RKeyboard);
			else
				kbdblock();
		if(got&RMouse){
			if(lock==2 || !ptinrect(mouse.xy, screen.r)){
				mouseunblock();
				continue;
			}
			nwhich = flwhich(mouse.xy);
			scr = which && ptinrect(mouse.xy, which->scroll);
			if(mouse.buttons)
				flushtyping(1);
			if (chord == 1 && !mouse.buttons)
				chord = 0;
			if (chord)
				chord |= mouse.buttons;
			else if(mouse.buttons&1){
				if(nwhich){
					if(nwhich!=which)
						current(nwhich);
					else if(scr)
						scroll(which, 1, fwdbut == 3 ? 1 : 3);
					else{
						t=(Text *)which->user1;
						if(flselect(which)){
							outTsl(Tdclick, t->tag, which->p0);
							t->lock++;
						}else if(t!=&cmd)
							outcmd();
						if(mouse.buttons&1)
							chord = mouse.buttons;
					}
				}
			}else if((mouse.buttons&2) && which){
				if(scr)
					scroll(which, 2, 2);
				else
					menu2hit();
			}else if((mouse.buttons&4)){
				if(scr)
					scroll(which, 3, fwdbut == 3 ? 3 : 1);
				else
					menu3hit();
			}else if((mouse.buttons&8)){
				scrollone(which, 1);
			}else if((mouse.buttons&16)){
				scrollone(which, 3);
			}
			mouseunblock();
		}
		if(chord) {
			t = (Text *)which->user1;
			if(!t->lock){
				int w = which-t->l;
				if(chord&2){
					cut(t, w, 1, 1);
					chord &= ~2;
				}
				if(chord&4){
					paste(t, w);
					chord &= ~4;
				}
			}
		}
	}
}
コード例 #5
0
ファイル: main.c プロジェクト: Nate-River56/Polymer-Brush
int main(int argc, char *argv[]){
    
    long k,q;
    long i,j,t; /* 追加しました */
    unsigned int iseed;
    //long imax;
    long mcs;
    long logcount,logstep, ocount, ocount_all;
    
    double delta2[NOMCS+1], delta2z[NOMCS+1], zsl[NOMCS+1];
    double delta2av, delta2zav, zslav;
    double energy[NOMCS+1], energy_s[NOMCS+1];
    double energy2[NOMCS+1], energy_s2[NOMCS+1];
    double mag_av[NOMCS+1];
    double mag_av2[NOMCS+1];
    double energy_av, energy2_av, energy_s_av, energy_s2_av;
    double mag_av_av, mag_av2_av;
    double G2x_tmp[SL+1], G2y_tmp[SL+1], G2z_tmp[SL+1];
    double G2x_all[SL+1], G2y_all[SL+1], G2z_all[SL+1];
    double magz_tmp[Mz+1],mag2z_tmp[Mz+1];
    double magz_all[Mz+1],mag2z_all[Mz+1];
    double d_poly_tmp[Mz+1];
    double d_poly_all[Mz+1];
    double AC_a_all[M/2+1][SL+1],AC_b_all[M/2+1][SL+1],AC_p_all[M/2+1][SL+1];
    double d_a_all[SL+1],d_b_all[SL+1],d_p_all[SL+1];
    double c[SL+1],s_zav[Mz+1];
    
    FILE *fp0;
    FILE *fp1;
    FILE *fp2;
    FILE *fp3;
    FILE *fp4;
    FILE *fp5;
    FILE *fp6;
    FILE *fp7;
    FILE *fp8;
    FILE *fp9;
    FILE *fp10;
    FILE *fp11;
    
    iseed=ISEED;
    rinit(iseed);
    
    transition_prob(K,J,h,T);
    
    /* initial distribution */
    //もしargumentが特定の値ならばinit_conf()をread_rnd()とread_spin()に置き換える
    
    init_conf(M,Mz,SN,SL,s,x,y,z,xdummy,ydummy);
    
    logcount=TMCS;
    logstep=TMCS; //初期配置に置き、カウンターをTMCS分だけ進める
    
    for(mcs=1;mcs<TMCSMAX+1;mcs++){ //Thermatizationに達するまで繰り返す
        
        update(K,J,SL,SN,M,Mz,s,imsk,x,y,z,xdummy,ydummy);
        if (nonsolFlag==!1) {
            update_sol(K,J,h,M,Mz,s);
        }
        
        if(mcs==logcount){
            delta2_calc(SL,SN,x,y,z);
            energy_calc(K,J,h,SL,SN,M,Mz,s,x,y,z);
            magnetization_calc(M,Mz,s);
            printf("%ld %d %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f\n", mcs, SL, DELTA2, DELTA2z, zSL, E, E2, Es, Es2, mag, mag2);
            fflush(stdout);
            
            logcount+=logstep;
        };
    };
    
    /* update observation */
    
    logcount=OMCS;
    logstep=OMCS;
    
    for(k=1; k<NOMCS+1; k++){//配列の初期化
        delta2[k]=0;
        energy[k]=0;
        energy2[k]=0;
        energy_s[k]=0;
        energy_s2[k]=0;
        mag_av[k]=0;
        mag_av2[k]=0;
        
        c[k]=0;
        s_zav[k]=0;
	}
    
    for(k=0;k<SL+1;k++){//配列の初期化
        G2x_tmp[k]=0;
        G2x_all[k]=0;
        G2y_tmp[k]=0;
        G2y_all[k]=0;
        G2z_tmp[k]=0;
        G2z_all[k]=0;
	}
    ocount=0;
    ocount_all=0;
    
    for(k=1;k<Mz+1;k++){//配列の初期化
        magz_tmp[k]=0;
        magz_all[k]=0;
        mag2z_tmp[k]=0;
        mag2z_all[k]=0;
        d_poly_tmp[k]=0;
        d_poly_all[k]=0;
	}
    
    for (i=1; i<=M/2; i++) {
        for (j=1; j<=SL; j++) {
            AC_a_all[i][j]=0;
            AC_b_all[i][j]=0;
            AC_p_all[i][j]=0;
        }
    }
    
    for (i=1; i<=SL; i++) {
        d_a_all[i]=0;
        d_b_all[i]=0;
        d_p_all[i]=0;
    }
    
    for(mcs=1;mcs<OMCSMAX+1;mcs++){
        
        update(K,J,SL,SN,M,Mz,s,imsk,x,y,z,xdummy,ydummy);
        if (nonsolFlag==!1) {
            update_sol(K,J,h,M,Mz,s);
        }
        
        if(mcs==logcount){
            ocount++;
            delta2_calc(SL,SN,x,y,z);
            energy_calc(K,J,h,SL,SN,M,Mz,s,x,y,z);
            magnetization_calc(M,Mz,s);
            G2_calc(SL,SN,G2x,G2y,G2z,x,y,z);
            magz_calc(M,Mz,s,magz);
            mag2z_calc(M, Mz, s, mag2z);
            d_poly_calc(M,Mz,s,d_poly);
            d_a_calc(SL,M,Mz,s,d_a);
            d_p_calc(SL,M,Mz,s,d_p);
            if (escapeACFlag==!1) {
                ac_a_calc(SL,M,Mz,s,AC_a);
            }
            delta2[ocount]=DELTA2;
            delta2z[ocount]=DELTA2z;
            zsl[ocount]=zSL;
            energy[ocount]=E;
            energy2[ocount]=E2;
            energy_s[ocount]=Es;
            energy_s2[ocount]=Es2;
            mag_av[ocount]=mag;
            mag_av2[ocount]=mag2;
            
            for(k=1;k<SL+1;k++){
                G2x_tmp[k]+=G2x[k];
                G2y_tmp[k]+=G2y[k];
                G2z_tmp[k]+=G2z[k];
            }
            
            for(k=1;k<Mz+1;k++){
                magz_tmp[k]+=magz[k];
                mag2z_tmp[k]+=mag2z[k];
                d_poly_tmp[k]+=d_poly[k];
            }
            
            for (i=1; i<=M/2; i++) {
                for (j=1; j<=SL; j++) {
                    AC_a_all[i][j]+=AC_a[i][j];
                }
            }
            
            for (i=1; i<=SL; i++) {
                d_a_all[i]+=d_a[i];
            }
            
            
            if(ocount==NOMCS){
                ocount_all++;
                delta2av=0;
                delta2zav=0;
                zslav=0;
                energy_av=0;
                energy2_av=0;
                energy_s_av=0;
                energy_s2_av=0;
                mag_av_av=0;
                mag_av2_av=0;
                
                for(k=1;k<NOMCS+1;k++){
                    delta2av+=delta2[k];
                    delta2zav+=delta2z[k];
                    zslav+=zsl[k];
                    energy_av+=energy[k];
                    energy2_av+=energy2[k];
                    energy_s_av+=energy_s[k];
                    energy_s2_av+=energy_s2[k];
                    mag_av_av+=mag_av[k];
                    mag_av2_av+=mag_av2[k];
                };
                
                delta2av/=NOMCS;
                delta2zav/=NOMCS;
                zslav/=NOMCS;
                
                energy_av/=NOMCS;
                energy2_av/=NOMCS;
                energy_s_av/=NOMCS;
                energy_s2_av/=NOMCS;
                mag_av_av/=NOMCS;
                mag_av2_av/=NOMCS;
                
                for(k=1;k<SL+1;k++){
                    G2x_tmp[k]/=NOMCS;
                    G2x_all[k]+=G2x_tmp[k];
                    G2y_tmp[k]/=NOMCS;
                    G2y_all[k]+=G2y_tmp[k];
                    G2z_tmp[k]/=NOMCS;
                    G2z_all[k]+=G2z_tmp[k];
                }
                
                for(k=0;k<SL+1;k++){
                    G2x_tmp[k]=0;
                    G2y_tmp[k]=0;
                    G2z_tmp[k]=0;
                }
                
                for(k=1;k<Mz+1;k++){
                    magz_tmp[k]/=NOMCS;
                    magz_all[k]+=magz_tmp[k];
                    mag2z_tmp[k]/=NOMCS;
                    mag2z_all[k]+=mag2z_tmp[k];
                    d_poly_tmp[k]/=NOMCS;
                    d_poly_all[k]+=d_poly_tmp[k];
                }
                
                for(k=1;k<Mz+1;k++){ //temporaryな配列の初期化
                    magz_tmp[k]=0;
                    mag2z_tmp[k]=0;
                    d_poly_tmp[k]=0;
                }
                ocount=0;
                
                printf("%ld %d %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f %15.12f\n",mcs,SL, delta2av,
                       delta2zav,zslav,energy_av,energy2_av,energy_s_av,energy_s2_av,mag_av_av,mag_av2_av);
                fflush(stdout);
            }
            
            logcount+=logstep;
        }
        
    }    
    
    //ファイルへの出力
    
    fname(K,J,M,ISEED);
    
    fp0=fopen(file[0],"w");
    for(k=1;k<SL+1;k++){
		G2x_all[k]/=ocount_all;
		G2y_all[k]/=ocount_all;
		G2z_all[k]/=ocount_all;
    }
	for(k=1;k<SL+1;k++){
        fprintf(fp0,"%ld\t %15.15f %15.12f %15.12f\n",k,G2x_all[k], G2y_all[k], G2z_all[k]);
	}
    fclose(fp0);
    
	
    fp1=fopen(file[1],"w");
    for(k=1;k<Mz+1;k++){
		magz_all[k]/=ocount_all;
    }
	for(k=1;k<Mz+1;k++){
        fprintf(fp1,"%ld\t %15.15f\n",k,magz_all[k]);
	}
    fclose(fp1);
    
    
    fp2=fopen(file[2],"w");
	for(j=1;j<SN+1;j++){
        for(t=1;t<SL+1;t++){
            fprintf(fp2,"%ld %ld %d %d %d\n",j,t,x[j][t],y[j][t],z[j][t]);
        }
	}
    fclose(fp2);
    
    
    fp3=fopen(file[3],"w");
	for(j=1;j<SN+1;j++){
        for(t=1;t<SL+1;t++){
            fprintf(fp3,"%ld %ld %d %d %d\n",j,t,xdummy[j][t],ydummy[j][t],z[j][t]);
        }
	}
    fclose(fp3);
	
    
    fp4=fopen(file[4],"w");
    for(k=1;k<Mz+1;k++){
		d_poly_all[k]/=ocount_all;
    }
	for(k=1;k<Mz+1;k++){
        fprintf(fp4,"%ld\t %15.15f\n",k,d_poly_all[k]);
	}
    fclose(fp4);
    
    
    fp5=fopen(file[5],"w");
    for (i=1; i<=M; i++) {
        for (j=1; j<=M; j++) {
            for (k=1; k<=Mz; k++) {
                s_zav[k]+=s[i][j][k];
            }
        }
    }
    for (k=1;k<=Mz; k++) {
        s_zav[k]/=(M*M);
    }
    for (q=1; q<=SL; q++) {
        for (k=1; k<=SL; k++) {
            c[q]+=s_zav[k]*s_zav[k+q];
        }
        c[q]=c[q]/SL;
    }
    for (k=1; k<=SL; k++) {
        fprintf(fp5,"%ld %f\n",k,c[k]);
    }
    fclose(fp5);
    
    
    fp6=fopen(file[6], "w");
    fprintf(fp6, "0\t%ld\n",IFORM1);
    fprintf(fp6, "0\t%ld\n",IFORM2);
    for (i=1; i<=251; i++) {
        fprintf(fp6,"%li\t%ld\n",i,IRND[i]);
    }
    fclose(fp6);

    
    fp7=fopen(file[7], "w");
    for (i=1; i<=M; i++) {
        for (j=1; j<=M; j++) {
            for (k=1; k<=Mz; k++) {
                fprintf(fp7, "%ld\t%ld\t%ld\t%d\n",i,j,k,s[i][j][k]);
            }
        }
    }
    fclose(fp7);
    
    fp8=fopen(file[8],"w");
    for (i=1; i<=M/2; i++) {
        for (j=1; j<=SL; j++) {
            AC_a_all[i][j]/=NOMCS;
            fprintf(fp8, "%ld\t%ld\t%f\n",i,j,AC_a_all[i][j]);
        }
    }
    fclose(fp8);
    
    
    fp9=fopen(file[9], "w");
    for (i=1; i<=SL; i++) {
        d_a_all[i]/=ocount_all;
        fprintf(fp9,"%ld\t%f\n",i,d_a_all[i]);
    }
    fclose(fp9);
    
    fp10=fopen(file[10],"w");
    for (i=1; i<=SL; i++) {
        d_p_all[i]/=ocount_all;
        fprintf(fp10,"%ld\t%f\n",i,d_p_all[i]);
    }
    fclose(fp10);
    
    fp11=fopen(file[11], "w");
    for(k=1;k<Mz+1;k++){
		mag2z_all[k]/=ocount_all;
    }
	for(k=1;k<Mz+1;k++){
        fprintf(fp1,"%ld\t %15.15f\n",k,mag2z_all[k]-magz_all[k]*magz_all[k]);
	}
    fclose(fp11);
    
    return EXIT_SUCCESS;
    
}
コード例 #6
0
ファイル: dcp.c プロジェクト: swhobbit/UUPC
static CONN_STATE process( const POLL_MODE pollMode, const char callGrade )
{
   KWBoolean master  = (KWBoolean) ( pollMode == POLL_ACTIVE ?
                                       KWTrue : KWFalse );
   KWBoolean aborted = KWFalse;
   XFER_STATE state =  (XFER_STATE) (master ? XFER_SENDINIT : XFER_RECVINIT);
   XFER_STATE old_state = XFER_EXIT;
                              /* Initialized to any state but the
                                 original value of "state"           */
   XFER_STATE save_state = XFER_EXIT;
   char currentGrade = (char) ((unsigned char) 0xff);

/*--------------------------------------------------------------------*/
/*  Yea old state machine for the high level file transfer procotol   */
/*--------------------------------------------------------------------*/

   while( state != XFER_EXIT )
   {
      printmsg(state == old_state ? 14 : 4 ,
               "process: Machine state is = %c", state );
      old_state = state;

      if ( terminate_processing != aborted )
      {
         aborted = terminate_processing;
         state = XFER_ABORT;
      }

      switch( state )
      {

         case XFER_SENDINIT:  /* Initialize outgoing protocol        */
            state = sinit();
            break;

         case XFER_RECVINIT:  /* Initialize Receive protocol         */
            state = rinit();
            break;

         case XFER_MASTER:    /* Begin master mode                   */
            master = KWTrue;
            state = XFER_NEXTJOB;
            resetGrade( );    /* Reset best grade status             */
            currentGrade = E_firstGrade;
            break;

         case XFER_SLAVE:     /* Begin slave mode                    */
            master = KWFalse;
            state = XFER_RECVHDR;
            break;

         case XFER_NEXTJOB:   /* Look for work in local queue        */
            state = scandir( rmtname, currentGrade );
            break;

         case XFER_REQUEST:   /* Process next file in current job
                                 in queue                            */
            state = newrequest();
            break;

         case XFER_PUTFILE:   /* Got local transmit request          */
            state = ssfile();
            break;

         case XFER_GETFILE:   /* Got local tranmit request           */
            state = srfile();
            break;

         case XFER_SENDDATA:  /* Remote accepted our work, send data */
            state = sdata();
            break;

         case XFER_SENDEOF:   /* File xfer complete, send EOF        */
            state = seof( master );
            break;

         case XFER_FILEDONE:  /* Receive or transmit is complete     */
            state = (XFER_STATE) (master ? XFER_REQUEST : XFER_RECVHDR);
            break;

         case XFER_NEXTGRADE: /* Process next grade of local files   */
            currentGrade = nextGrade( callGrade );

            if ( currentGrade )
               state = XFER_NEXTJOB;
            else
               state = XFER_NOLOCAL;
            break;

         case XFER_NOLOCAL:   /* No local work, remote have any?     */
            state = sbreak();
            break;

         case XFER_NOREMOTE:  /* No remote work, local have any?     */
            state = schkdir( (KWBoolean) (pollMode == POLL_ACTIVE ?
                                             KWTrue : KWFalse ),
                              callGrade );
            break;

         case XFER_RECVHDR:   /* Receive header from other host      */
            state = rheader();
            break;

         case XFER_TAKEFILE:  /* Set up to receive remote requested
                                 file transfer                       */
            state = rrfile();
            break;

         case XFER_GIVEFILE:  /* Set up to transmit remote
                                 requuest file transfer              */
            state = rsfile();
            break;

         case XFER_RECVDATA:  /* Receive file data from other host   */
            state = rdata();
            break;

         case XFER_RECVEOF:
            state = reof();
            break;

         case XFER_LOST:      /* Lost the other host, flame out      */
            printmsg(0,"process: Connection lost to %s, "
                       "previous system state = %c",
                       rmtname, save_state );
            hostp->status.hstatus = HS_CALL_FAILED;
            state = XFER_EXIT;
            break;

         case XFER_ABORT:     /* Internal error, flame out           */
            printmsg(0,"process: Aborting connection to %s, "
                       "previous system state = %c",
                       rmtname, save_state );
            hostp->status.hstatus = HS_CALL_FAILED;
            state = XFER_ENDP;
            break;

         case XFER_ENDP:      /* Terminate the protocol              */
            state = endp();
            break;

         default:
            printmsg(0,"process: Unknown state = %c, "
                       "previous system state = %c",
                       state, save_state );
            state = XFER_ABORT;
            break;
      } /* switch */

      save_state = old_state; /* Used only if we abort               */

   } /* while( state != XFER_EXIT ) */

/*--------------------------------------------------------------------*/
/*           Protocol is complete, terminate the connection           */
/*--------------------------------------------------------------------*/

   return CONN_TERMINATE;

} /* process */
コード例 #7
0
ファイル: percolate.c プロジェクト: bluefeet32/labs
int main(int argc, char *argv[])
{
  float rho;
	int i;

  /*
   *  Set the most important variable, the density rho, to the default 0.4
	 * command line arguments can change this
   */

  rho  = 0.4;


/*	if(argc != 1 && argc != 3)
	{
		printf("usage: -p (float rho) is the density, -l (int L) the size of the grid\n");
		return 1;
	}

	printf("percolate: command line arguments = %d, %s, %s\n", argc, argv[1], argv[2]);

	for(i=1; i<argc; ++i)
	{
		printf("percolate: %d, %s\n", i);
		if(argc[i] == '-p')
		{
			printf("hi\n");	
			rho = atof(argv[i+1]);
			if(rho  == 0)
			{
				printf("usage: rho must be a float\n");
				return 1;
			}
		}
	}*/

  /*
   *  Define the main "map" array
   */

  int map[L+2][L+2];

  int loop, nchange;

  int seed;
	int seconds;


  /*
   *  Set the randum number seed and initialise the generator
   */

	seconds = time(NULL)%10000; /*gets last for digits of time*/

  seed = seconds; 
  rinit(seed);

  printf("percolate: parameters are rho=%f, L=%d, seed=%d\n", rho, L, seed);

  /*
   *  Initialise map with density rho
   */

  percfill(map, rho);

  /*
   *  Initialise map ready for updating
   */

  percinit(map);

  /*
   *  Keep updating until nothing changes
   */

  loop = 1;
  nchange = 1;

  while (nchange > 0)
    {
      nchange = percupdate(map);

  /*    printf("percolate: number of changes on loop %d is %d\n",
	     loop, nchange);
	*/
      loop++;
    }

  /*
   *  Test to see if percolation occurred
   */

  if (perctest(map))
    {
      printf("percolate: cluster DOES percolate\n");
    }
  else
    {
      printf("percolate: cluster DOES NOT percolate\n");
    }

  /*
   *  Write map to the file "map.pgm", displaying L*L (ie all) the clusters
   */
  percwrite("map.pgm", map, 2);
}
コード例 #8
0
ファイル: main.c プロジェクト: carriercomm/legacy
void
threadmain(int argc, char *argv[])
{
	int i, got, scr;
	Text *t;
	Rectangle r;
	Flayer *nwhich;

	getscreen(argc, argv);
	iconinit();
	initio();
	scratch = alloc(100*RUNESIZE);
	nscralloc = 100;
	r = screen->r;
	r.max.y = r.min.y+Dy(r)/5;
	flstart(screen->clipr);
	rinit(&cmd.rasp);
	flnew(&cmd.l[0], gettext, 1, &cmd);
	flinit(&cmd.l[0], r, font, cmdcols);
	cmd.nwin = 1;
	which = &cmd.l[0];
	cmd.tag = Untagged;
	outTs(Tversion, VERSION);
	startnewfile(Tstartcmdfile, &cmd);

	got = 0;
	for(;;got = waitforio()){
		if(hasunlocked && RESIZED())
			resize();
		if(got&(1<<RHost))
			rcv();
		if(got&(1<<RPlumb)){
			for(i=0; cmd.l[i].textfn==0; i++)
				;
			current(&cmd.l[i]);
			flsetselect(which, cmd.rasp.nrunes, cmd.rasp.nrunes);
			type(which, RPlumb);
		}
		if(got&(1<<RKeyboard))
			if(which)
				type(which, RKeyboard);
			else
				kbdblock();
		if(got&(1<<RMouse)){
			if(hostlock==2 || !ptinrect(mousep->xy, screen->r)){
				mouseunblock();
				continue;
			}
			nwhich = flwhich(mousep->xy);
			scr = which && ptinrect(mousep->xy, which->scroll);
			if(mousep->buttons)
				flushtyping(1);
			if(mousep->buttons&1){
				if(nwhich){
					if(nwhich!=which)
						current(nwhich);
					else if(scr)
						scroll(which, 1);
					else{
						t=(Text *)which->user1;
						if(flselect(which)){
							outTsl(Tdclick, t->tag, which->p0);
							t->lock++;
						}else if(t!=&cmd)
							outcmd();
					}
				}
			}else if((mousep->buttons&2) && which){
				if(scr)
					scroll(which, 2);
				else
					menu2hit();
			}else if((mousep->buttons&4)){
				if(scr)
					scroll(which, 3);
				else
					menu3hit();
			}
			mouseunblock();
		}
	}
}
コード例 #9
0
ファイル: main.c プロジェクト: rennis250/sam
void
threadmain(int argc, char *argv[])
{
	int i, got, scr, chord;
	Text *t;
	Rectangle r;
	Flayer *nwhich;

	/*
	 * sam is talking to us on fd 0 and 1.
	 * move these elsewhere so that if we accidentally
	 * use 0 and 1 in other code, nothing bad happens.
	 */
	dup(0, 3);
	dup(1, 4);
	hostfd[0] = 3;
	hostfd[1] = 4;
	close(0);
	close(1);
	open("/dev/null", OREAD);
	if(open("/dev/tty", OWRITE) < 0)
		open("/dev/null", OWRITE);

	notify(notifyf);

	if(protodebug) print("getscreen\n");
	getscreen(argc, argv);
	if(protodebug) print("iconinit\n");
	iconinit();
	if(protodebug) print("initio\n");
	initio();
	if(protodebug) print("scratch\n");
	scratch = alloc(100*RUNESIZE);
	nscralloc = 100;
	r = screen->r;
	r.max.y = r.min.y+Dy(r)/5;
	if(protodebug) print("flstart\n");
	flstart(screen->clipr);
	rinit(&cmd.rasp);
	flnew(&cmd.l[0], gettext, 1, &cmd);
	flinit(&cmd.l[0], r, font, cmdcols);
	cmd.nwin = 1;
	which = &cmd.l[0];
	cmd.tag = Untagged;
	outTs(Tversion, VERSION);
	startnewfile(Tstartcmdfile, &cmd);

	got = 0;
	chord = 0;
	if(protodebug) print("loop\n");
	for(;;got = waitforio()){
		if(hasunlocked && RESIZED())
			resize();
		if(got&(1<<RHost))
			rcv();
		if(got&(1<<RPlumb)){
			for(i=0; cmd.l[i].textfn==0; i++)
				;
			current(&cmd.l[i]);
			flsetselect(which, cmd.rasp.nrunes, cmd.rasp.nrunes);
			type(which, RPlumb);
		}
		if(got&(1<<RKeyboard))
			if(which)
				type(which, RKeyboard);
			else
				kbdblock();
		if(got&(1<<RMouse)){
			if(hostlock==2 || !ptinrect(mousep->xy, screen->r)){
				mouseunblock();
				continue;
			}
			nwhich = flwhich(mousep->xy);
			//scr = which && ptinrect(mousep->xy, which->scroll);
			scr = which && (ptinrect(mousep->xy, which->scroll) || mousep->buttons&(8|16));
			if(mousep->buttons)
				flushtyping(1);
			//if(chording && chord==1 && !mousep->buttons)
			if((mousep->buttons&1)==0)
				chord = 0;
			//if(chording && chord)
 				//chord |= mousep->buttons;
			//else if(mousep->buttons&1){
			if(chord && which && which==nwhich){
				chord |= mousep->buttons;
				t = (Text *)which->user1;
				if(!t->lock){
					int w = which-t->l;
					if(chord&2){
						cut(t, w, 1, 1);
						chord &= ~2;
					}
					if(chord&4){
						paste(t, w);
						chord &= ~4;
					}
				}
			}else if(mousep->buttons&(1|8)){
			//}else if(mousep->buttons&1){
				if(nwhich){
					if(nwhich!=which)
						current(nwhich);
					else if(scr)
						//scroll(which, 1);
						scroll(which, (mousep->buttons&8) ? 4 : 1);
					else{
						t=(Text *)which->user1;
						if(flselect(which)){
							outTsl(Tdclick, t->tag, which->p0);
							t->lock++;
						}else if(t!=&cmd)
							outcmd();
						if(mousep->buttons&1)
							chord = mousep->buttons;
					}
				}
			}else if((mousep->buttons&2) && which){
				if(scr)
					scroll(which, 2);
				else
					menu2hit();
            }else if(mousep->buttons&(4|16)){
			//}else if(mousep->buttons&4){
				if(nwhich!=which)
					current(nwhich);
				else if(scr)
				//if(scr)
					//scroll(which, 3);
					scroll(which, (mousep->buttons&16) ? 5 : 3);
				else
					menu3hit();
			}
			mouseunblock();
		}
	}
}