PDA

Показать полную графическую версию : Как написать программу-календарь?


denver-312
28-11-2007, 11:43
Помогите пожалуйста!
Даны целые числа N1, N2, которые обозначают число и месяц.
Например, “1 4” – это “1 апреля”
Требуется разработать и отладить программу подсчёта дня недели этой даты,
если год невисокосный, а 1 января этого года – среда.
Я никак не соображу, как мне дни недели вместе со днями в месяце задать в программе. Т. е.
вот этот кусок:


case 1: puts(“PONEDELNIK \n”); break;
case 2: puts(“VTORNIK \n”); break;
case 3: puts(“SREDA \n”); break;
case 4: puts(“CHETVERG \n”); break;
case 5: puts(“PYTNICA \n”); break;
case 6: puts(“SUBBOTA \n”); break;
case 7: puts(“VOSKRESENIE \n”); break;
default: puts(“CHSLO DILZNO BYT V DIAPAZONE 1..7 \n”);

вот с этим:

days[0] = 31; days[4] = 31; days[8] = 30;
days[1] = 28; days[5] = 30; days[9] = 31;
days[2] = 31; days[6] = 31; days[10] = 30;
days[3] = 30; days[7] = 31; days[11] = 31;


Заранее спасибо!

Alexej77
28-11-2007, 20:46
C++ Builder 6:
int N1, N2, i, dn;
int days[12];
div_t x;

days[0] = 31;
days[1] = 28;
days[2] = 31;
days[3] = 30;
days[4] = 31;
days[5] = 30;
days[6] = 31;
days[7] = 31;
days[8] = 30;
days[9] = 31;
days[10] = 30;
days[11] = 31;

N1 = 1;
N2 = 4;

dn = 0;
if (N2 > 1)
for (i = 0; i < N2 - 1; i ++)
dn += days[i];
dn += N1;
x = div(dn + 1, 7);
ShowMessage("День недели: " + IntToStr(x.rem + 1));
1-понедельник, 7 - воскресенье

PS: Если перейти к системе юлианских дат, то можно определять день недели любого года, месяца, дня (с помощью 6-ти несложных формул).




© OSzone.net 2001-2012