編集メニュー > 新規作成 編集 コピー 名前の変更 凍結 アップロード 添付ファイル一覧 バックアップ

counter

シミュレーションとかでどのくらいイベント数が終わったかとかを表示するためのもの。 単に表示させるだけならすぐできるけど

  • 改行しない
  • 終わりの時間を表示 するようなものを作ってみました。
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <curses.h>
    
    /*
      neve         : present count
      toteve       : total count
      Tsec         : passed time in second
     */
    void prtevt_( long int *neve, long int *toteve)
    {
      long int INTERVAL=10000;
      static time_t t1;
      time_t t2;
      double tdiff,min_tot;
    
      if ( (*neve)<2 ){
        t1=time(NULL);
      }
      t2=time(NULL) ;
      tdiff=difftime(t2,t1)/60.; 
    
      if ((*neve)%INTERVAL==0){
        printf("\r");
        if ( *neve == 0 ){
          fprintf( stdout, " #Events:\t%10ld/%10ld ( finish = %5.1f/----- min )",
                   *neve,*toteve);
        }else if (*neve == *toteve){
          printf("\n");
        }else{
          min_tot = (*toteve) * (tdiff)/(*neve);
          fprintf( stdout, " #Events:\t%10ld/%10ld ( finish = %5.1f/%5.1f min )",
                   *neve,*toteve, tdiff, min_tot);
        }
        fflush(stdout);
      }
    }
    
    ////main
    //int main()
    //{
    //  long int i;
    //  long int toteve=100;
    //  for (i=0;i<=toteve;i++){
    //    sleep(1);
    //    prtevt_(&i,&toteve);
    //  }
    //}