Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 14:33   #31
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
SuperVisor
Извернусь - Я имел ввиду Borland C++
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.09.2009, 22:14   #32
Frame1992
Пользователь
 
Аватар для Frame1992
 
Регистрация: 21.09.2009
Сообщений: 31
По умолчанию

Товарищи!!!Спасибо вам невероятное!!!Вот еще бы с Delphi в C++ как нибудб помогли перевести......)))Заранее спасибо!!!

Последний раз редактировалось Frame1992; 26.09.2009 в 06:08.
Frame1992 вне форума Ответить с цитированием
Старый 30.09.2009, 07:31   #33
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Кнопки работают, только если разрешить доступ к т. наз. активному содержимому (среде VBA).

Код программы в документе можно запустить также через ALT-F8 + двойной щелчок по её имени (JulianToGregorian или GregorianToJulian).

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Ага, с 100 г. (по Юлию, он не високосен: не кратен 400, а по Григорию високосен).
Перепутал в спешке Юлия с Григорием! 100-й (по новому стилю) год = 365 дням, он не високосный.

Сам удивился, но день недели совпал! Вот пример дат для 1917.

Код:
1917 (григорианский календарь)

           АВГУСТ        СЕНТЯБРЬ       ОКТЯБРЬ          НОЯБРЬ         ДЕКАБРЬ
пн       6 13 20 27     3 10 17 24  1  8 15 22 29     5 12 19 26     3 10 17 24 31
вт       7 14 21 28     4 11 18 25  2  9 16 23 30     6 13 20 27     4 11 18 25
ср    1  8 15 22 29     5 12 19 26  3 10 17 24 31     7 14 21 28     5 12 19 26
чт    2  9 16 23 30     6 13 20 27  4 11 18 25     1  8 15 22 29     6 13 20 27
пт    3 10 17 24 31     7 14 21 28  5 12 19 26     2  9 16 23 30     7 14 21 28
сб    4 11 18 25     1  8 15 22 29  6 13 20 27     3 10 17 24     1  8 15 22 29
вс    5 12 19 26     2  9 16 23 30  7 14 21 28     4 11 18 25     2  9 16 23 30
     31 32 33 34 35 35 36 37 38 39 40 41 42 43 44 44 45 46 47 48 48 49 50 51 52 53

1917 (юлiанскiй календарь)

        АВГУСТЪ          СЕНТЯБРЬ       ОКТЯБРЬ          НОЯБРЬ         ДЕКАБРЬ
пн       7 14 21 28     4 11 18 25     2  9 16 23 30     6 13 20 27     4 11 18 25
вт    1  8 15 22 29     5 12 19 26     3 10 17 24 31     7 14 21 28     5 12 19 26
ср    2  9 16 23 30     6 13 20 27     4 11 18 25     1  8 15 22 29     6 13 20 27
чт    3 10 17 24 31     7 14 21 28     5 12 19 26     2  9 16 23 30     7 14 21 28
пт    4 11 18 25     1  8 15 22 29     6 13 20 27     3 10 17 24     1  8 15 22 29
сб    5 12 19 26     2  9 16 23 30     7 14 21 28     4 11 18 25     2  9 16 23 30
вс    6 13 20 27     3 10 17 24     1  8 15 22 29     5 12 19 26     3 10 17 24 31
     32 33 34 35 36 36 37 38 39 40 40 41 42 43 44 45 45 46 47 48 49 49 50 51 52 53
DateShift.doc можно считать бета-релизом. Переводит даты н. э. с 1 по ≈5879490 гг.

PerevodDat.doc — ошибка! (Это информация для 5 человек, посмотревших его. Надеюсь, дойдёт.)

Может, кто-нибудь экзешник выложит?
Вложения
Тип файла: doc DateShift.doc (68.5 Кб, 29 просмотров)

Последний раз редактировалось Sasha_Smirnov; 01.10.2009 в 07:00. Причина: исправил!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 01.10.2009, 05:59   #34
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию P.S.

Ознакомьтесь с темой века. Если тронет — зацените! Я старался. Может, зря?
Sasha_Smirnov вне форума Ответить с цитированием
Старый 03.10.2009, 09:00   #35
Frame1992
Пользователь
 
Аватар для Frame1992
 
Регистрация: 21.09.2009
Сообщений: 31
По умолчанию

Вот эт я сам написал, ток не знаю, почему не работает...Товарищи, посмотрите, че исправить надо?
Код:
#include <stdio.h>
void main()
{
int Ud, Um, Uy, d, m, y, MaxD, M;
printf("\Vvedi Ud");
scanf("%d", & Ud);
printf("\Vvedi Um");
scanf("%d", &Um");
printf("\vvedi Uy");
scanf("%d", &Uy);
M=(Uy/100)-(Uy/400)-2;
switch (Um)
    {case 1: case3: case 5: case 7: case 8: case 10: case 12:
      MaxD=31;
       break;
       case 4: case 6: case 11:
       MaxD=30;
       break;
       case 2:
       if (Uy%4==0 && !(Uy%100==0 && Uy%400!=0))
              MaxD=29;
       else MaxD=28
           if (d>MaxD)
            {d=MaxD-d;
              m=Um+1;
             }
               if (m>12)
             {y=Uy+1;
               m=m-11;
               d=MaxD-d;
              }
                  printf("\ %d %d %d", &d, &m, &y);
               else printf("\ %d %d %d", &d, &m, &Uy);
           else printf("\ %d %d %d", &d, &Um, &Uy);
       default:
       printf("Oshibka");
       }
}
Frame1992 вне форума Ответить с цитированием
Старый 06.10.2009, 02:59   #36
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Навскидку: недостаёт обработки 9-го месяца
Код:
case 9:
И не используется формула
Код:
M=(Uy/100)-(Uy/400)-2;
И вообще, при наличии m, допустимо ли объявлять M?
Sasha_Smirnov вне форума Ответить с цитированием
Старый 11.10.2009, 00:50   #37
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Понимание

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Объясню на пальцах...
Переводим дату в дни - отбрасываем знаки после запятой. Вот теперь у Вас есть количество дней с 31 декабря 1889г.
Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Можно дату переводить в дни (прошедшие с 31.12.01 до н. э.), а затем обратно в дату — но юлианскую.
Павел Сергеевич, я имел в виду фактические дни с начала эры — а не целочисленную часть переменных, хранящих дату.

По крайней мере мой путь был результативен.

Хотелось бы взглянуть на ваш код в исполняемом виде (типа dateshifter.exe), а то у меня нет компилятора.

Последний раз редактировалось Sasha_Smirnov; 11.10.2009 в 01:00.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 11.10.2009, 08:03   #38
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Хотелось бы взглянуть на ваш код в исполняемом виде (типа dateshifter.exe), а то у меня нет компилятора.
если речь идёт о коде, выложенном SuperVisor в данной теме в пост #26, то возьму на себя смелость выложить пример программки с этим кодом.
(демонстрируется только функция перевода из Юлианской даты в Григорианскую...)
Вложения
Тип файла: rar sv.rar (132.0 Кб, 23 просмотров)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.10.2009, 23:03   #39
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Спасибо, Сергей.

Как бы это корректно сформулировать... всё OK, но есть лишний год*: между минус 1-м (что легко понять как 1-й год до нашей эры) и 1-м.

Программа в общем удалась и даёт (для лет н. э.) то, что нужно! Но обидно, что целая эра сдвинулась на год.

_____________________________
* нулевым его обычно называют, но ноль всего лишь точка на шкале времён!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 13.10.2009, 00:22   #40
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Саша, да не заморачивайтесь Вы так!
1) если верить конвертору календарей (красивый, собака ), то нулевого года не было,
т.е. был 1 г. до нашей эры, после чего пошёл 1 г. нашей эры.

2) если верить вот этой крайне занимательной статье, то, цитирую:
Цитата:
Правильное применение юлианского календаря началось только с 7 в. от Р.Х. С этого времени все календарные годы, порядковое число которых делится на 4, являются високосными.
поэтому что можно получить для дат ранее 7 века нашей эры — одному Богу известно

3) Григорианский календарь был введён папой Григорием XIII 4 октября 1582 года
поэтому что-то переводить до 1582 года — не очень осмысленно (хотя и можно, конечно...)
Знаете, как старый анекдот загадка - "почему монету, на которой выбита дата "II год до н.э." можно считать фальшивой?"

и последнее, согласитесь, что нам с Вами в практической жизни, календарь ни на первый, ни на второй, ни даже на сотый год нашей эры не пригодится...

вот, всем известны правила определения високосных годов:
Цитата:
Каждый год, номер которого кратен 4 — високосный.
Однако, каждый год кратный 100 — не високосный.
Однако, каждый год кратный 400 все же високосный — 1600, 2000 и т.д.
но, a) немногие знают, что год кратный 4000 НЕ ВИСКОСНЫЙ
b) все эти правила в рабочих программа можно смело игнорировать. достаточно проверки делимости на 4.
Вы спросите почему? Потому что в практической жизни не понадобится дата ранее 1901 года и старее 2099... (да и это я с запасом взял) а в этом диапазоне действует правило - год кратный 4 — високосный...


p.s. сорри за длинный пост...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка по С++ Ready Помощь студентам 2 20.05.2009 01:19
задачка lucky Помощь студентам 1 07.05.2009 13:49
Задачка на С!!! Exorcist Помощь студентам 1 07.12.2008 21:15
Задачка Claster Помощь студентам 2 24.09.2008 17:53