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



         

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


{ Восстановление месяца и дня в году Y }

{ по порядковому номеру дня ord_day }

{ М - сюда засылается номер месяца }

{ D - сюда засылается номер дня месяца } var

А,В, С,Е:integer; begin

А:=1889;

if(Y mod 400 = 0) OR ((Y mod 4 = 0)AND(Y mod 100 <>0))) then A:=1523;

B:=trunc((ord_day+A-122.1)/365.25) ;

C:=ord_day+A-trunc(365.25 * B);

E:=trunc(C/30.6001);

if(E<13.5) then M:=E-1 else M:=E-13;

D:=C-trunc(30.6001*E); end; begin

clrscr;

write('Задайте год : ');

readln(Y);

write ('Задайте порядковый номер дня в году : ');

readln(ord_day);

month_day(Y,ord_day,M,D);

writeln('Eмy соответствует месяц = ',М, ' и день = ',D);

readln; end.

Задание 9.07. Количество дней в месяце

Составить функцию max_day, определяющую количество дней по номеру месяца.

Совет 1 (общий)

Наверное, самый простой алгоритм основан на выборке нужного числа из предварительно подготовленного массива с учетом коррекции количества февральских дней в високосном году. Високосный год должен делиться без остатка на 400 или делиться на 4, но не делиться на 100.

Программа 9_07.bas

DECLARE FUNCTION MaxDay!(Y%,M%)

REM Определение количества дней в месяце

DATA 31,28,31,30,31,30,31,31,30,31,30,31

DIM SHARED DAYS(1 TO 12)

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

CLS

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

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

PRINT "Число дней в этом месяце = ";

MaxDay (Y%,M%)

END

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 100<>0) ) THEN MaxDay=29

END IF END FUNCTION

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

#include <stdio.h>

#include <conio.h>

int max_day(int Y, int M);

main() . {

int Y,M;

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

scanf("%d",&Y);

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

scanf("%d",&M);

printf("\n Число дней в этом месяце = %d",max_day(Y,M));

getch();

}

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




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