Page 1 of 1

Календарь

Posted: Mon Aug 28, 2017 6:13 am
by Mr. Kibernetik
Эта программа печатает календарь в текстовом окне:

Code: Select all

day,month,year = #.today()
#.output(#.str(year,">68<"))
> row, 0..3
  > col, 1..3
    cal[col] = mcal(row*3+col,year)
    size = #.size(cal[col],1)
  <
  > i, 1..8
    str = ""
    > col, 1..3
      ? col>1, str += "    "
      line = ""
      ? #.size(cal[col],1)!<i, line = cal[col][i]
      str += #.str(line,"<20<")
    <
    #.output(str)
  <
<
mcal(m,y)=
  months = ["January","February","March","April","May","June","July","August","September","October","November","December"]
  days = [31,28,31,30,31,30,31,31,30,31,30,31]
  ? y%4=0, days[2] = 29
  lines = #.array(0)
  lines[1] = #.str(months[m],">20<")
  lines[2] = "Mo Tu We Th Fr Sa Su"
  n = 3
  > i, 1..#.weekday(1,m,y)-1
    lines[n] += "   "
  <
  > d, 1..days[m]
    wd = #.weekday(d,m,y)
    lines[n] += #.str(d,">2>")
    ? wd<7, lines[n] += " "
    ? wd=7, n += 1
  <
  <= lines
.
Результат работы программы:

Code: Select all

                                2017                                
      January                 February                 March        
Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su
                   1           1  2  3  4  5           1  2  3  4  5
 2  3  4  5  6  7  8     6  7  8  9 10 11 12     6  7  8  9 10 11 12
 9 10 11 12 13 14 15    13 14 15 16 17 18 19    13 14 15 16 17 18 19
16 17 18 19 20 21 22    20 21 22 23 24 25 26    20 21 22 23 24 25 26
23 24 25 26 27 28 29    27 28                   27 28 29 30 31      
30 31                                                               
       April                    May                     June        
Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su
                1  2     1  2  3  4  5  6  7              1  2  3  4
 3  4  5  6  7  8  9     8  9 10 11 12 13 14     5  6  7  8  9 10 11
10 11 12 13 14 15 16    15 16 17 18 19 20 21    12 13 14 15 16 17 18
17 18 19 20 21 22 23    22 23 24 25 26 27 28    19 20 21 22 23 24 25
24 25 26 27 28 29 30    29 30 31                26 27 28 29 30      
                                                                    
        July                   August                September      
Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su
                1  2        1  2  3  4  5  6                 1  2  3
 3  4  5  6  7  8  9     7  8  9 10 11 12 13     4  5  6  7  8  9 10
10 11 12 13 14 15 16    14 15 16 17 18 19 20    11 12 13 14 15 16 17
17 18 19 20 21 22 23    21 22 23 24 25 26 27    18 19 20 21 22 23 24
24 25 26 27 28 29 30    28 29 30 31             25 26 27 28 29 30   
31                                                                  
      October                 November                December      
Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su    Mo Tu We Th Fr Sa Su
                   1           1  2  3  4  5                 1  2  3
 2  3  4  5  6  7  8     6  7  8  9 10 11 12     4  5  6  7  8  9 10
 9 10 11 12 13 14 15    13 14 15 16 17 18 19    11 12 13 14 15 16 17
16 17 18 19 20 21 22    20 21 22 23 24 25 26    18 19 20 21 22 23 24
23 24 25 26 27 28 29    27 28 29 30             25 26 27 28 29 30 31
30 31