![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
magadan87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: нет Всего: 1 |
Вот такая интересная проблема появилась, нужно сделать что-то навроде календаря.
Допустим нам известная сегодняшняя дата magadan@home:~$ date Чтв Ноя 8 16:53:10 NOVT 2007 от этой(ну или любой другой "сегодняшней") даты мы будем отталкиваться.. задача: зная сегодняшню дату определить название дня недели (понедельник, вторник, etc) только по введёным пользователем данным число --> 08 месяц --> 11 год --> 2689(или 1978) я так понимаю надо будет использовать time.h? Есть так же практически таже самая программа на паскале. (пробовал p2c("Output from p2c 1.21alpha-07.Dec.93, the Pascal-to-C translator" (с) p2c), но чушь какая-то получается...) Есть и алгоритм(с википедии взят): a = (14 − месяц) / 12 y = год − a m = месяц + 12 * a − 2 ДеньНедели = (7000 + (день + y + y / 4 − y / 100 + y / 400 + (31 * m) / 12)) ОСТАТОК 7 Как бы теперь всё это "оформить" на сях... (ЯП: С , не С++ ) что-то ничего в голову не приходит, кроме как
Это сообщение отредактировал(а) magadan87 - 9.11.2007, 15:12 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
magadan87 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: нет Всего: 1 |
Эм... если честно мало что понятно -_-' сделал просто, без затей... (правда пришлось заменить "get_week_day" на просто "main", т.к. компилятор начинал жутко ругаться $ gcc time.c -o time time.c: В функции 'get_week_day' time.c:7: предупреждение: incompatible implicit declaration of built-in function 'memset' time.c:14:2: warning: no newline at end of file /usr/lib/gcc/i486-slackware-linux/4.1.2/../../../crt1.o: In function `_start': (.text+0x18): undefined reference to `main' collect2: выполнение ld завершилось с кодом возврата 1
можно слегка прокоментировать? |
||||||
|
|||||||
Fin |
|
||||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Можно спросить, а где описана такая структура функции main? Добавлено @ 16:39 Это я творил когда то календарик на JavaScript
CalculateFirstDay Вычисляеет, на какой день недели апмзодится первый день месяца. Вычисления происходят относительно Григорианского стиля. Это сообщение отредактировал(а) Fin - 9.11.2007, 16:39 -------------------- Пролетал мимо. |
||||
|
|||||
magadan87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: нет Всего: 1 |
Хм. Не знаю. ) Работает же. ^^ По крайней мере компилируется точно. ) За календарик на JavaScript спасибо, поковыряю. ^^ P.S. извиняюсь если что, просто C изучаю методом тыка, параллельно читая хрестоматию по программированию на Си в Unix Андрея Богатырёва. ) |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Ну вообше то тебя компилятор поздравил
Так что, как оно у тебя компилирется, я не знаю. Это сообщение отредактировал(а) Fin - 9.11.2007, 17:51 -------------------- Пролетал мимо. |
|||
|
||||
magadan87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: нет Всего: 1 |
Он ругался на get_week_day. Когда увидел "undefined reference to `main'" решил заменить get_week_day на main и каким-то образом всё заработало. Мистика. ) логики в этих действиях мало.. но тем не менее, работает же. ) вот всё что выдаёт компилятор после замены $ gcc time.c -o tame time.c: В функции 'main' time.c:7: предупреждение: incompatible implicit declaration of built-in function 'memset' time.c:14:2: warning: no newline at end of file |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
magadan87,
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
magadan87 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: нет Всего: 1 |
спасибо, кой с чем уже разобрался и появился ещё один вопрос... magadan@home:day$ gcc day.c -o day magadan@home:day$ ./day day = 5 (это при get_week_day(2007, 11, 10)) вроде бы должно было быть day = 6 (суббота), т.к. tm_wday день недели 0..6 (0 - Воскресенье) а если дату изменяю "get_week_day(2980, 11, 10)" то выдаёт "day = 3", что то же неверно (если верить col'у) можно конечно сделать tm.tm_mday = day + 1; но это неправильно же будет? ) |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
magadan87,
0 - понедельник 6 - воскресенье аналогично 0 - январь 11 - декабрь поэтому month - 1 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
magadan87 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 2.11.2007 Где: Томск Репутация: нет Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |