Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как написать программу-календарь? (http://forum.oszone.net/showthread.php?t=94988)

denver-312 28-11-2007 11:43 686553

Как написать программу-календарь?
 
Помогите пожалуйста!
Даны целые числа 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 686849

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-ти несложных формул).


Время: 09:51.

Время: 09:51.
© OSzone.net 2001-