по порядковому номеру дня ord_day
{ Восстановление месяца и дня в году 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();
}
/*--------------------------------------*/
Содержание Назад Вперед