summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/c-pascal/prog/sun.c')
-rw-r--r--Master/texmf-dist/doc/generic/c-pascal/prog/sun.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c b/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c
new file mode 100644
index 00000000000..889341b5b9d
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/c-pascal/prog/sun.c
@@ -0,0 +1,39 @@
+#include <stdio.h>
+#include <math.h>
+
+int months[]={0, 31, 28, 31, 30, 31, 30,
+ 31, 31, 30, 31, 30, 31};
+char weekdays[7][15]={"Sunday", "Monday", "Tuesday", "Wednesday",
+ "Thursday", "Friday", "Sunday"};
+
+/* this program calculates the latidude
+ where polar day begins/ends */
+void main()
+{
+ int day=24, month=6, weekday=2;
+ double angle=0;
+ double latitude;
+
+ do
+ {
+ latitude=atan(tan((23+27.0/60)*M_PI/180)*cos(angle))*180/M_PI;
+ latitude=(latitude>0)? 90-latitude : -90-latitude;
+ printf("%2d.%02d %12s : %d %02d'\n", day, month,
+ weekdays[weekday], (int)latitude,
+ (int)fabs((latitude-(int)latitude)*60));
+ if (weekday==0)
+ printf("\n");
+
+ angle+=2*M_PI/365;
+ day++;
+ if (day>months[month])
+ {
+ day=1;
+ month++;
+ if (month>12)
+ month=1;
+ }
+ if (++weekday>6)
+ weekday=0;
+ } while (month!=1);
+}