Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.65/57: Рейтинг темы: голосов - 57, средняя оценка - 4.65
1 / 1 / 0
Регистрация: 12.08.2009
Сообщений: 10
1

Вывести на дисплей календарь на текущий год

12.08.2009, 15:28. Просмотров 10533. Ответов 28
Метки нет (Все метки)


Вывести на дисплей календарь на текущий год
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2009, 15:28
Ответы с готовыми решениями:

Вывести на дисплей календарь на текущий год.
Вывести на дисплей календарь на текущий год.

Вывести на дисплей календарь на текущий год
Используя оператор for надо Вывести на дисплей календарь на текущий год

Вывести на дисплей календарь на текущий год
1. Вывести на дисплей календарь на текущий год. 2.Составить программу для проверки...

Вывести на дисплей календарь на текущий год
Вывести на дисплей календарь на текущий год. Напишите формулу пожалуйста на qBasic

28
Модератор
62827 / 46887 / 32314
Регистрация: 18.05.2008
Сообщений: 113,612
13.08.2009, 17:31 21
Сообщение от Puporev
Цитата:
for cyberforum
Я так понял эта строка для прикола?

«Программа от Messager специально для cyberforum.ru». А что за прикол ты увидел?
Ну представляешь, приносит чел программу сдавать, а в ней написано где и кем она составлена. Может неловко получиться.
0
Эксперт С++
3057 / 1399 / 421
Регистрация: 19.01.2009
Сообщений: 3,770
14.08.2009, 00:16 22
потом опять символы, латинские и непонятные. бесконечно идут.
То же что во вложениях.

В TP7 длина строки задается нулевым символом, все незадействованные не обязаны быть нулевыми. То же касается типа ShortString в Delphi.
Однако в AnsiString используется система определения длины по позиции первого #0 в строке (как, в прочем, и в C)
Иными словами такой подход определения выхода из цикла справедлив для Delphi AnsiString.
Спасибо, я это знаю. Но дело в том, что прога нужна для ТП. Я не поленился и потрассировал функцию, виясняя, что она возвращает, так вот после TTable, она (как я сегодня это выяснил, иногда) возвращает #0.

Целью моего поста, который Вы процитировали, было убрать "мусор" с экрана.
вообще, если количество дней 7, зачем здесь использовать repeat, если можно использовать for, например, вот так:
Pascal
1
for a:=1 to 7 do writeln('> '+P^[a]);
1
Миниатюры
Вывести на дисплей календарь на текущий год  
28 / 25 / 1
Регистрация: 28.07.2009
Сообщений: 109
14.08.2009, 11:09 23
Цитата Сообщение от Messenger of G. Посмотреть сообщение

http://ru.wikipedia.org/wiki/T... 0.BA.D0.B8
Как правило, время задержки процедуры Delay() зависит от частоты процессора, автор волен сам решить, какую задержку ему использовать.
Вообще-то, по указанной ссылке написано немного другое:

Есть разные исправленные версии модуля CRT 234, самая распространённая из которых Клауса Хартнегга. В его версии ошибка 200 не возникает, но длительность Delay на быстрых компьютерах меньше желаемой, и эта проблема по незнанию иногда тоже считается недостатком Turbo Pascal.
Автор волен выкинуть кривой TURBO.TPL в топку.

В TP7 длина строки задается нулевым символом, все незадействованные не обязаны быть нулевыми. То же касается типа ShortString в Delphi.
Однако в AnsiString используется система определения длины по позиции первого #0 в строке (как, в прочем, и в C)
Неправда. В Delphi длина и счётчик ссылок хранятся сразу перед началом символьных данных. #0 после символьных данных ставится всего лишь для совместимости с PAnsiChar. В Delphi строках можно без проблем использовать #0 в середине строки, и на этот символ лучше никак не реагировать.
0
1 / 1 / 0
Регистрация: 12.08.2009
Сообщений: 10
16.08.2009, 19:39  [ТС] 24
Целью моего поста, который Вы процитировали, было убрать "мусор" с экрана.
вообще, если количество дней 7, зачем здесь использовать repeat, если можно использовать for, например, вот так:
Pascal
1
for a:=1 to 7 do writeln('> '+P^[a]);
заменил, календарь выводит. но не на весь экран. А на одном месте затирая предыдущий месяц. как сделать, чтобы были видны все месяца сразу и возможно ли это? спасибо!!
0
Эксперт С++
3057 / 1399 / 421
Регистрация: 19.01.2009
Сообщений: 3,770
16.08.2009, 22:56 25
как сделать, чтобы были видны все месяца сразу и возможно ли это?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
program Calendar;
uses Crt;
const month_offset:array[1..12] of integer = (
  0, 31, 61, 92, 122, 153, 184,214, 245, 275, 306, 337
);
const month_size:array[1..12] of integer = (
  31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
);
const names:array[0..6] of string = (
  'Вс','Пн','Вт','Ср','Чт','Пт','Сб'
);
const monthnames:array[1..12] of string = (
  'Январь',   'Февраль', 'Март',  'Апрель',
  'Май',      'Июнь',    'Июль',  'Август',
  'Сентябрь', 'Октябрь', 'Ноябрь','Декбрь'
);
const celllength = 3;
type TTable = array[1..16] of string;
     PTable = ^TTable;
function Weekday(d,m,y:integer):byte;
begin
  m:=m-2;
  if m<=0 then begin m:=m+12; dec(y) end;
  Weekday:=(d+month_offset[m]+y+y div 4-y div 100+y div 400+2) mod 7;
end;
 
function formated(Str:String;Len:integer):String;
var a:integer;
begin
  a:=Len-length(str);
  while a>0 do
  begin
    Str:=' '+Str;
    a:=a-1;
  end;
  formated:=Str;
end;
 
function Inttostr(x:integer):string;
begin
  IntToStr:=chr(x div 10 + 48)+chr(x mod 10 + 48);
end;
 
function ShowMonth(d,m,y:word; light:boolean):PTable;
var Res:TTable;
var firstday: byte;
var p,c,lastday:integer;
begin
  firstday:=Weekday(1,m,y);
  for p:=0 to firstday-1 do
  begin
    Res[p+1]:={names[p]+}Formated('',celllength);
    c:=8-firstday+p;
    lastday:=month_size[m];
    if m=2 then
      if (y mod 4 <> 0) or ((y mod 100 = 0) and (y mod 400 <> 0))
      then lastday:=28
      else lastday:=29;
    while c<=LastDay do
    begin
        if (c-7=d) and light
        then Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength)
        else Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength);
      c:=c+7;
    end;
  end;
  for p:=firstday to 6 do
  begin
    Res[p+1]:={names[p]}'';
    c:=p-firstday+1;
    lastday:=month_size[m];
    if m=2 then
      if (y mod 4 <> 0) or ((y mod 100 = 0) and (y mod 400 <> 0))
      then lastday:=28
      else lastday:=29;
    while c<=lastday do
    begin
        if (c-7=d) and light
        then Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength)
        else Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength);
      c:=c+7;
    end;
  end;
  ShowMonth:=@Res;
end;
 
var P:PTable;
    a, year : integer;
    day, mon, row, col : byte;
begin
  clrscr;
  year := 2009;
  day  := 0;
 
  Write('Календарь на ', year, ' год');
  for row := 1 to 3 do
  begin
    {выводим названия месяцев}
    GotoXY(WhereX, ((row-1)*8)+2);
    for col := 1 to 4 do
    begin
      GotoXY(((col-1)*18)+5, WhereY); 
      write(monthnames[((row-1)*4)+col]);
    end;
    {выводим названия дней}
    GotoXY(1, ((row-1)*8)+3);
    for a := 0 to 6 do
    begin
      write(names[a]);
      GotoXY(1, WhereY+1);
    end;
    {печатаем таблички с днями}
    for col := 1 to 4 do
    begin
      P:=ShowMonth(day, ((row-1)*4)+col, year, true);
      GotoXY(((col-1)*18)+4, ((row-1)*8)+3);
      for a:=1 to 7 do
      begin
        write(P^[a]);
        GotoXY(((col-1)*18)+4, WhereY+1);
      end;
    end;
  end;
  ReadLn;
end.
2
1 / 1 / 0
Регистрация: 12.08.2009
Сообщений: 10
17.08.2009, 19:37  [ТС] 26
БОЛЬШОЕ СПАСИБО!!!
Можете подписать какие функции что делают?
0
2 / 2 / 2
Регистрация: 07.10.2010
Сообщений: 31
10.10.2010, 20:25 27
Цитата Сообщение от Oleg Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
program Calendar;
uses Crt;
const month_offset:array[1..12] of integer = (
  0, 31, 61, 92, 122, 153, 184,214, 245, 275, 306, 337
);
const month_size:array[1..12] of integer = (
  31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
);
const names:array[0..6] of string = (
  'Вс','Пн','Вт','Ср','Чт','Пт','Сб'
);
const monthnames:array[1..12] of string = (
  'Январь',   'Февраль', 'Март',  'Апрель',
  'Май',      'Июнь',    'Июль',  'Август',
  'Сентябрь', 'Октябрь', 'Ноябрь','Декбрь'
);
const celllength = 3;
type TTable = array[1..16] of string;
     PTable = ^TTable;
function Weekday(d,m,y:integer):byte;
begin
  m:=m-2;
  if m<=0 then begin m:=m+12; dec(y) end;
  Weekday:=(d+month_offset[m]+y+y div 4-y div 100+y div 400+2) mod 7;
end;
 
function formated(Str:String;Len:integer):String;
var a:integer;
begin
  a:=Len-length(str);
  while a>0 do
  begin
    Str:=' '+Str;
    a:=a-1;
  end;
  formated:=Str;
end;
 
function Inttostr(x:integer):string;
begin
  IntToStr:=chr(x div 10 + 48)+chr(x mod 10 + 48);
end;
 
function ShowMonth(d,m,y:word; light:boolean):PTable;
var Res:TTable;
var firstday: byte;
var p,c,lastday:integer;
begin
  firstday:=Weekday(1,m,y);
  for p:=0 to firstday-1 do
  begin
    Res[p+1]:={names[p]+}Formated('',celllength);
    c:=8-firstday+p;
    lastday:=month_size[m];
    if m=2 then
      if (y mod 4 <> 0) or ((y mod 100 = 0) and (y mod 400 <> 0))
      then lastday:=28
      else lastday:=29;
    while c<=LastDay do
    begin
        if (c-7=d) and light
        then Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength)
        else Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength);
      c:=c+7;
    end;
  end;
  for p:=firstday to 6 do
  begin
    Res[p+1]:={names[p]}'';
    c:=p-firstday+1;
    lastday:=month_size[m];
    if m=2 then
      if (y mod 4 <> 0) or ((y mod 100 = 0) and (y mod 400 <> 0))
      then lastday:=28
      else lastday:=29;
    while c<=lastday do
    begin
        if (c-7=d) and light
        then Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength)
        else Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength);
      c:=c+7;
    end;
  end;
  ShowMonth:=@Res;
end;
 
var P:PTable;
    a, year : integer;
    day, mon, row, col : byte;
begin
  clrscr;
  year := 2009;
  day  := 0;
 
  Write('Календарь на ', year, ' год');
  for row := 1 to 3 do
  begin
    {выводим названия месяцев}
    GotoXY(WhereX, ((row-1)*8)+2);
    for col := 1 to 4 do
    begin
      GotoXY(((col-1)*18)+5, WhereY); 
      write(monthnames[((row-1)*4)+col]);
    end;
    {выводим названия дней}
    GotoXY(1, ((row-1)*8)+3);
    for a := 0 to 6 do
    begin
      write(names[a]);
      GotoXY(1, WhereY+1);
    end;
    {печатаем таблички с днями}
    for col := 1 to 4 do
    begin
      P:=ShowMonth(day, ((row-1)*4)+col, year, true);
      GotoXY(((col-1)*18)+4, ((row-1)*8)+3);
      for a:=1 to 7 do
      begin
        write(P^[a]);
        GotoXY(((col-1)*18)+4, WhereY+1);
      end;
    end;
  end;
  ReadLn;
end.

а на 2010 возможно??? :-)
0
2 / 2 / 3
Регистрация: 14.11.2009
Сообщений: 44
14.05.2012, 20:14 28
Цитата Сообщение от schdub Посмотреть сообщение
Pascal
1
2
3
4
  m:=m-2;
  if m<=0 then begin m:=m+12; dec(y) end;
  Weekday:=(d+month_offset[m]+y+y div 4-y div 100+y div 400+2) mod 7;
.

скажи как ты эту формулу получил и почему она именно такая?я нашел,что это формула Гаусса,но толком нигде не объясняется(
0
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 3
14.04.2013, 15:16 29
Перепишите пожалуйста эту прогу так, чтобы результат выводился в текстовый файл и если возможно без использования координат, неделя должна начинать с Понедельника

пример
Вывести на дисплей календарь на текущий год


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
program Calendar;
uses Crt;
const month_offset:array[1..12] of integer = (
  0, 31, 61, 92, 122, 153, 184,214, 245, 275, 306, 337
);
const month_size:array[1..12] of integer = (
  31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
);
const names:array[0..6] of string = (
  '‚б','Џ*','‚в','‘а','—в','Џв','‘Ў'
);
const monthnames:array[1..12] of string = (
  'џ*ў*ам',   '”Ґўа*«м', 'Њ*ав',  'ЂЇаҐ«м',
  'Њ*©',      '€о*м',    '€о«м',  'ЂўЈгбв',
  '‘Ґ*впЎам', 'ЋЄвпЎам', 'Ќ®пЎам','„ҐЄЎам'
);
const celllength = 3;
type TTable = array[1..16] of string;
     PTable = ^TTable;
function Weekday(d,m,y:integer):byte;
begin
  m:=m-2;
  if m<=0 then begin m:=m+12; dec(y) end;
  Weekday:=(d+month_offset[m]+y+y div 4-y div 100+y div 400+2) mod 7;
end;
 
function formated(Str:String;Len:integer):String;
var a:integer;
begin
  a:=Len-length(str);
  while a>0 do
  begin
    Str:=' '+Str;
    a:=a-1;
  end;
  formated:=Str;
end;
 
function Inttostr(x:integer):string;
begin
  IntToStr:=chr(x div 10 + 48)+chr(x mod 10 + 48);
end;
 
function ShowMonth(d,m,y:word; light:boolean):PTable;
var Res:TTable;
var firstday: byte;
var p,c,lastday:integer;
begin
  firstday:=Weekday(1,m,y);
  for p:=0 to firstday-1 do
  begin
    Res[p+1]:={names[p]+}Formated('',celllength);
    c:=8-firstday+p;
    lastday:=month_size[m];
    if m=2 then
      if (y mod 4 <> 0) or ((y mod 100 = 0) and (y mod 400 <> 0))
      then lastday:=28
      else lastday:=29;
    while c<=LastDay do
    begin
        if (c-7=d) and light
        then Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength)
        else Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength);
      c:=c+7;
    end;
  end;
  for p:=firstday to 6 do
  begin
    Res[p+1]:={names[p]}'';
    c:=p-firstday+1;
    lastday:=month_size[m];
    if m=2 then
      if (y mod 4 <> 0) or ((y mod 100 = 0) and (y mod 400 <> 0))
      then lastday:=28
      else lastday:=29;
    while c<=lastday do
    begin
        if (c-7=d) and light
        then Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength)
        else Res[p+1]:=Res[p+1]+Formated(IntToStr(c),celllength);
      c:=c+7;
    end;
  end;
  ShowMonth:=@Res;
end;
 
var P:PTable;
    a, year : integer;
    day, mon, row, col : byte;
begin
  clrscr;
  write('Enter year: ');
  readln(year);
  day  := 0;
  clrscr;
  Writeln('Љ*«Ґ*¤*ам ** ', year, ' Ј®¤');
  for row := 1 to 3 do
  begin
    {ўлў®¤Ё¬ **§ў**Ёп ¬Ґбп楢}
    GotoXY(WhereX, ((row-1)*8)+2);
    for col := 1 to 4 do
    begin
      GotoXY(((col-1)*18)+5, WhereY);
      write(monthnames[((row-1)*4)+col]);
    end;
    {ўлў®¤Ё¬ **§ў**Ёп ¤*Ґ©}
    GotoXY(1, ((row-1)*8)+3);
    for a := 0 to 6 do
    begin
      write(names[a]);
      GotoXY(1, WhereY+1);
    end;
    {ЇҐз*в*Ґ¬ в*Ў«ЁзЄЁ б ¤*п¬Ё}
    for col := 1 to 4 do
    begin
      P:=ShowMonth(day, ((row-1)*4)+col, year, true);
      GotoXY(((col-1)*18)+4, ((row-1)*8)+3);
      for a:=1 to 7 do
      begin
        write(P^[a]);
        GotoXY(((col-1)*18)+4, WhereY+1);
      end;
    end;
  end;
  ReadLn;
end.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2013, 15:16

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вывести на дисплей календарь на текущий год
Вывести на дисплей календарь на текущий год. ??

Вывести календарь на текущий месяц
Нужна программа,которая выводит календарь на текущий месяц,так же нужны суммы по строкам и...

Вывести календарь на текущий месяц в виде таблицы
Помогите решить задачу. Создайте скрипт,который выводил бы календарь на текущий месяц в виде...

Вывести календарь на год
Когда берем по два элемента остается один, когда берем по 3,4,5 и 6 элементов тоже остается один, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.