Re: [問題] 想請教Fortran如何撰寫進度條的語法

看板Fortran作者 (最強⑨番-さるの)時間15年前 (2009/08/17 16:42), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《BrianCashman (最強⑨番-さるの)》之銘言: : 請先說明你程式是否有GUI,有的話,程式若是非messages polling的方式,基本上畫面 : 在進入迴圈後會當在那不會更新,只要避免messages不被漏掉,問題不大。 : 基本的進度計算很簡單,就是現在迴圈指數除以總迴圈數乘以100取整數(非四捨五入), : 於每次迴圈計算的最後更新進度值,並最後在迴圈外補上100%。 : 若是要計算所需時間,則請加上測量每次或者每幾(10 or 100)次迴圈所需的時間, : 平均後(可用移動平均法)乘以剩下迴圈數之比例,就是時間剩餘評估量。 : 若顯示是console text mode,在每次write or print後不要換行,每次都用TL控制碼 : 回復列頭位置,動起來就會像是你所需要的。 再看一遍文章,發現可能沒說清楚,舉個實例好了 program Processbar use ifwin implicit none integer total_t,t,process,i integer whnd logical ret character*50 ::barstr Type(T_COORD) pos whnd = GetStdHandle(STD_OUTPUT_HANDLE) pos.x=0 pos.y=0 total_t=36000 do t=1,total_t process=int(real(t,8)/real(total_t,8)*100) do i=1,50 if (i <= process/2) then barstr(i:i)="*" else barstr(i:i)="=" end if end do ret=SetConsoleCursorPosition(whnd, pos) write(*,10) process,barstr 10 format (10x,i3,'%',3x,a50) end do write(*,*) 'done' pause end program Processbar complier 是 ivfortran , IDE為 VS200X 理論上是visual fortran都沒問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.91.196
文章代碼(AID): #1AYHVSUJ (Fortran)
文章代碼(AID): #1AYHVSUJ (Fortran)