Re: [問題] 想請教Fortran如何撰寫進度條的語法
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章