Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 14


DIM SHARED DAYS(1 TO 12)

FOR j=l TO 12: READ DAYS(j): NEXT j

CLS

INPUT "Задайте год : ",Y%

INPUT "Задайте месяц : ",M4

calendar Y%,M%

END

SUB calendar(Y%,M%)

DIM i AS INTEGER, j AS INTEGER, k AS INTEGER, q AS INTEGER

DIM a(42),b$<7)

b$(0}="понедельник": b$(1)="вторник ": b$(2)="среда

b$(3)="четверг ": b$(4)="пятница ": b$(5)="суббота

b$(6)="воскресенье"

CLS

PRINT "Календарь на ";М%;" месяц ";Y%;" года"

i=WeekDay(Y%,M%,l)

IFi=0 THEN i=7

q-MaxDay(Y%,M%)

FOR j=0 TO 41: a(j)=0: NEXT j

k=l

FOR j=i-l TO q+i-2: a(j)=k: k=k+l: NEXT j

FOR j=0 TO 6

LOCATE j+3,10: PRINT b$(j);

k=0

WHILE k<=35

IF a(k+j)<>0 THEN

PRINT USING "####";a(k+j); ELSE PRINT " ";

END IF k=k+7

WEND NEXT j END SUB

FUNCTION JD(Y%,M%,DT)

DIM a AS INTEGER, b AS INTEGER, mm AS INTEGER, yy AS INTEGER

DIM с AS LONG

b=0

yy=Y%

mm=M%

IF M%<3 THEN yy=yy-l: mm=mm+12

a=yy\100

IF Y%+M%/100!+DT/10000>1582.1015# THEN b=b+2-a+a\4

END IF

c=INT(365.25*yy) IF yy<0 THEN c=INT(365.25*yy-.75)

JD=c+INT(30.6001*(mm+1))+DT+1720994.5#+b END FUNCTION

FUNCTION MaxDay(Y%,M%)

MaxDay=DAYS(M%)

IF M%<>2 THEN EXIT FUNCTION

IF (Y% MOD 400=0)OR((Y% MOD 4=0)AND(Y% MOD l00<>0) ) THEN MaxDay=29

END IF END FUNCTION

FUNCTION WeekDay(Y%,M%,D%) dl!=D%+1.5

WeekDay=INT(JD(Y%,M%,dl!)) MOD 7 END FUNCTION

Программа 9_08.с

#include <stdio.h>

#include <conio.h>

void calendar(int Y,int M);

int week_day(int Y,int M,int D) ;

double JD(int Y,int M,double DT);

int max_day(int Y,int M);

main() {

int Y,M;

clrscr();

printf("Задайте год : ");

scanf("%d",&Y);

printf("Задайте месяц : ");

scanf("%d",&M);

calendar(Y,M);

getch(};

}

/*-------------------------------------------*/

void calendar'(int Y, int M) {

int a[42],i, j,k,q;




Содержание  Назад  Вперед