![]() |
|
#1
|
|||
|
|||
![]() Как сделать календарь на текущий год с помощью for?
|
#2
|
|||
|
|||
![]() А поподробнее задачу описать?
|
#3
|
|||
|
|||
![]() Нужно вывести на дисплей календарь на текущий год, без использования массивов, с помощью for.
|
#4
|
|||
|
|||
![]() Держи)
Код:
{$APPTYPE CONSOLE} uses Windows, SysUtils, DateUtils; const CMonths:array [1..12] of String = ('January','February','March','April','May','June','July', 'August','September','Octomber','November','December'); var SYear:Word; SMonth:Byte; function FillStr(const aStr:String; const aLength:byte):String; var b:byte; begin Result:=''; if aLength-Length(aStr) > 0 then for b:=1 to aLength-Length(aStr) do Result:=Result+' '; Result:=Result+aStr; end; procedure WriteMonth(const aYear:Word; const aMonth:Byte); var SDay:Byte; col, b:byte; begin Writeln(' ',CMonths[aMonth]); col:=DayOfWeek(EncodeDate(aYear,aMonth,1))-2; if (col > 1) and (col < 255) then for b:=1 to col do Write(' '); if col = 255 then col:=1; for SDay:=1 to DaysInMonth(EncodeDate(SYear,SMonth,1)) do begin Inc(Col); if Col >= 8 then begin Col:=1; Writeln; end; write(FillStr(Inttostr(SDay),3)); end; end; begin SYear:=YearOf(Now()); Writeln('Year: ',SYear); for SMonth:=1 to 12 do begin WriteMonth(SYear, SMonth); Writeln;Writeln; end; Readln; end. |