Форум программистов, компьютерный форум CyberForum.ru

Даты ввод вывод разность - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать вектор из диагональных элементов матрицы http://www.cyberforum.ru/cpp-beginners/thread26213.html
"Для заданной матрицы(N на M) сформировать вектор из её диагональных элементов. Добавить элементы вектора к элементам K-ой строки." Размер матрицы вводится пользователем с клавиатуры, то есть m и n не константы. Вот что у меня получилось: #include <iostream.h> #include <conio.h> #include <stdlib.h> void main () {clrscr; randomize ();
C++ Задача на двоичные файлы! В первом двоичном файле находится информация о группе владельцев автомобилей:фамилия, имя, пол, год рождения, годовой доход, марка авто. Во втором двоичном файле информация об автомобилях: марка авто, его цена и тех.характеристики (мощность, наибольшая скорость, масса, тип кузова, рабочий обьем целиндров). Вывести фамилии владельцев автомобилей, имеющиx доход выше среднего, а автомобиль... http://www.cyberforum.ru/cpp-beginners/thread26210.html
Задача на проверку есть ли граф гамильтоновым C++
Построить алгоритм, с помощью которого, для любого конечного неориентированного графа с n вершинами (1<=n<=20), который задается матрицей смежности, определяеться есть ли граф гамильтоновым. Приметка: Использовать теорему Дирака.
Найти наибольшую сумму чисел ряда, не превышающую заданное число k. C++
Помогите написать программу в С++. Найти найбольшую сумму чисел ряда 1,1/2,1/3...1/n не превышающую заданное число k.
C++ Чем редактировать blob поля? http://www.cyberforum.ru/cpp-beginners/thread26178.html
Кто подскажет ,во всех редакторах баз ето поле принимает memo,которое не редактируется ,а как занести туда текст я нигде не нашел.
C++ Заданна матрица А(N,M). Найти среднее геометрическое парных положительных элементов. Помогите решить алгоритм: Заданна матрица А(N,M). Найти среднее геометрическое парных положительных элементов. подробнее

Показать сообщение отдельно
Zeag
2 / 2 / 0
Регистрация: 09.03.2009
Сообщений: 13
16.03.2009, 20:25     Даты ввод вывод разность
Для расчета разницы дат еще есть очень полезная штука -- юлианские даты (JD). Применяются в астрономии. Дата приводится к числу дней после заданной, после чего остается вычесть одно из другого. Вот программка-тест, еще в 1995 написанная.
C++
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
/*
* Advance date to +/- N days using Julian dates.
* 25.01.95 15:38
*/
 
#include <stdio.h>
#include <dos.h>
 
#define INT(a) (long)(a)
#define FRAC(a) ((a)-INT(a))
 
void date_new(struct date *dt, long days)
{
double JD, JD1, F, Y, M, D, Mn, A, B, C, E, Q, Z, y, m, IsGrig;
 
Y = dt->da_year;
M = dt->da_mon ;
D = dt->da_day ;
 
/* --- Only after 1582, Oct 15 --- */
/*
JD = 367*Y - INT( 7 * (Y + INT( (M+9)/12 )) / 4) +
INT(275 * M/9) + D + 1721013.5;
*/
 
if(INT(M) > 2) { y = Y; m = INT(M); }
else { y = Y-1; m = INT(M)+12; } /* относим к предыдущему году */
 
IsGrig = ((Y*100)+INT(M))*100+D;
 
if(IsGrig > 15821015L) /* григорианская дата */
{ A = INT(y/100); B = 2 - A + INT(A/4); }
 
JD = INT(365.25*y) + INT(30.6001 * (m+1)) + D + 1720994.5;
 
if(IsGrig > 15821015L) JD += B; /* исх. дата - григорианская */
 
JD += days; /* Add period and convert back to DMY */
 
JD1 = JD + 0.5;
Z = INT (JD1);
F = FRAC(JD1);
 
if(Z < 2299161L) A = Z;
else {
Q = INT( (Z - 1867216.25) / 36524.25);
A = Z + 1 + Q - INT(Q/4);
}
 
B = A + 1524;
C = INT((B - 122.1)/365.25);
D = INT(365.25*C);
E = INT((B - D) / 30.6001);
 
M = (E <= 13) ? E - 1 : E - 13; /* месяц */
Mn = B - D - INT(30.6001 * E) + F; /* число (с дес. долями) */
Y = (M > 2.5) ? C - 4716 : C - 4715; /* год */
 
dt->da_day = INT(Mn);
dt->da_mon = M;
dt->da_year = Y;
}
 
#ifdef TEST
 
void main(void)
{
struct date dt;
 
getdate(&dt);
printf("Current date is %02d.%02d.%04d\n", dt.da_day, dt.da_mon, dt.da_year);
date_new(&dt, 1802); /* For 25.01.95 --> 01.01.2000 */
printf("Date%+6ld days is %02d.%02d.%04d\n", 1802L, dt.da_day, dt.da_mon, dt.da_year);
 
getdate(&dt);
date_new(&dt, -25); /* For 25.01.95 --> 31.12.1994 */
printf("Date%+6ld days is %02d.%02d.%04d\n", -26L, dt.da_day, dt.da_mon, dt.da_year);
}
 
#endif
На Borland C можно еще так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
* Advance date to +/- N days.
* (written by KIO -- 24.01.95 19:50)
*/
 
#include <stdio.h>
#include <time.h>
#include <dos.h>
 
void main(void)
{
long days = 1802; /* Must be long ! (or cast need) */
time_t first, second;
struct tm *tblock;
 
first = time(NULL); /* Gets system time in seconds */
second = first + days*24*60*60; /* Add N days */
 
tblock = localtime(&second); /* Converts date/time to a structure */
 
printf("New date/time is: %s", asctime(tblock)); /* Print out */
}
 
Текущее время: 01:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru