Averages/Mean time of day: Difference between revisions
Content deleted Content added
Walterpachl (talk | contribs) m →{{header|REXX}}: a better pi |
Walterpachl (talk | contribs) add PL/I |
||
Line 614: | Line 614: | ||
<lang PicoLisp>: (meanTime '("23:00:17" "23:40:20" "00:12:45" "00:17:19")) |
<lang PicoLisp>: (meanTime '("23:00:17" "23:40:20" "00:12:45" "00:17:19")) |
||
-> "23:47:43"</lang> |
-> "23:47:43"</lang> |
||
=={{header|PL/I}}== |
|||
<lang pli>*process source attributes xref; |
|||
avt: Proc options(main); |
|||
/*-------------------------------------------------------------------- |
|||
* 25.06.2014 Walter Pachl taken from REXX |
|||
*-------------------------------------------------------------------*/ |
|||
Dcl (addr,hbound,sin,cos,atan) Builtin; |
|||
Dcl sysprint Print; |
|||
Dcl times(4) Char(8) Init('23:00:17','23:40:20','00:12:45','00:17:19'); |
|||
Dcl time Char(8); |
|||
Dcl (alpha,x,y,ss,ww) Dec Float(18) Init(0); |
|||
Dcl day Bin Fixed(31) Init(86400); |
|||
Dcl pi Dec Float(18) Init(3.14159265358979323846); |
|||
Dcl (i,h,m,s) bin Fixed(31) Init(0); |
|||
Do i=1 To hbound(times); /* loop over times */ |
|||
time=times(i); /* pick a time */ |
|||
alpha=t2a(time); /* convert to angle (radians) */ |
|||
x=x+sin(alpha); /* accumulate sines */ |
|||
y=y+cos(alpha); /* accumulate cosines */ |
|||
End; |
|||
ww=atan(x/y); /* compute average angle */ |
|||
ss=ww*day/(2*pi); /* convert to seconds */ |
|||
If ss<0 Then ss=ss+day; /* avoid negative value */ |
|||
m=ss/60; /* split into hh mm ss */ |
|||
s=ss-m*60; |
|||
h=m/60; |
|||
m=m-h*60; |
|||
Put Edit(h,':',m,':',s)(Skip,3(p'99',a)); |
|||
t2a: Procedure(t) Returns(Bin Float(18)); /* convert time to angle */ |
|||
Dcl t Char(8); |
|||
Dcl 1 tt Based(addr(t)), |
|||
2 hh Pic'99', |
|||
2 * Char(1), |
|||
2 mm Pic'99', |
|||
2 * Char(1), |
|||
2 ss Pic'99'; |
|||
Dcl sec Bin Fixed(31); |
|||
Dcl a Bin Float(18); |
|||
sec=(hh*60+mm)*60+ss; |
|||
If sec>(day/2) Then |
|||
sec=sec-day; |
|||
a=2*pi*sec/day; |
|||
Return (a); |
|||
End; |
|||
End;</lang> |
|||
{{out}} |
|||
<pre>23:47:43</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |