0 / 0 / 0
Регистрация: 06.03.2013
Сообщений: 7

Структура "Историческое событие". Найти интервал между двумя событиями в днях

06.03.2013, 13:04. Показов 1523. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и протестировать функцию
a) ввода исторического события;
b) вывода на экран списка исторических событий;
c) вычисляющую интервал в днях, прошедший между двумя заданными историческими событиями;
Сделано всё кроме пункта с).Кто сможет написать его?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2013, 13:04
Ответы с готовыми решениями:

Вычислить интервал времени между двумя датами в днях
Вычислить интервал времени между двумя датами: B днях Добавлено через 2 часа 12 минут Срочно нужно сделать эту задачку!!

Определить интервал времени между этими двумя событиями
Тело, брошенное вертикально вверх с начальной скоростью v0 = 0,21 м/с, было на половине наибольшего своего поднятия дважды. Определить...

Вычислить интервал (в днях), прошедший между двумя датами.В рамках структуры
Ввести структуру (с полями число, месяц, год) для описания понятия дата. Составить и протестировать функцию, которая: вычисляет интервал...

3
1 / 1 / 1
Регистрация: 27.01.2015
Сообщений: 77
17.03.2015, 19:42
Покажи код.
0
18.03.2015, 02:27

Не по теме:

одноклассники?

0
 Аватар для Alexandr_1982
191 / 90 / 33
Регистрация: 04.11.2013
Сообщений: 474
Записей в блоге: 4
18.03.2015, 06:26
Примерно так можно попробовать
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
#include <stdio.h>
#include <malloc.h>
#include <math.h>
 
int mn[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 
struct _event
{
int day;
int month;
int year;
char* event;
};
 
struct event_node
{
struct _event* ev;
struct event_node* next;
};
 
int is_leap_year(int year)
{
if (year%4 == 0)
return 1;
else
return 0;
}
 
// ввод
 
// аргумент функции нельзя передавать через одинарный указатель.
 
void enter_event(struct event_node** c)
{
struct event_node* iterator;
if (*c == 0)
{
*c = (struct event_node*) malloc( sizeof(struct event_node) );
if (*c != 0)
{
(*c)->next = 0;
(*c)->ev = 0;
(*c)->ev = (struct _event*) malloc( sizeof(struct _event) );
if ((*c)->ev != 0)
{
(*c)->ev->event = 0;
(*c)->ev->day = 18;
(*c)->ev->month = 3;
(*c)->ev->year = 2015;
(*c)->ev->event = (char*) malloc( 2 * sizeof(char) );
if ((*c)->ev->event != 0)
{
(*c)->ev->event[0] = 't';
(*c)->ev->event[1] = '\0';
}
}
}
}
else
{
iterator = *c;
while (iterator->next != 0)
iterator  = iterator ->next;
iterator->next = (struct event_node*) malloc( sizeof(struct event_node) );
if (iterator ->next != 0)
{
iterator->next->next = 0;
iterator->next->ev = (struct _event*) malloc( sizeof(struct _event) );
if (iterator ->next ->ev != 0)
{
iterator->next->ev->event = 0;
iterator->next->ev->day = 18;
iterator->next->ev->month = 3;
iterator->next->ev->year = 2015;
iterator->next->ev->event = (char*) malloc( 2 * sizeof(char) );
if (iterator->next->ev->event != 0)
{
iterator->next->ev->event[0] = 't';
iterator->next->ev->event[1] = '\0';
}
}
}
}
}
 
// вывод
 
void print_event_internal(struct _event* c)
{
if (c == 0) return;
printf("%d %d %d %s\n", c->day, c->month, c->year, c->event);
}
 
void print_event(struct event_node** c)
{
struct event_node* iterator = *c;
if (iterator == 0) return;
while (iterator->next != 0)
{
print_event_internal(iterator->ev);
iterator  = iterator ->next;
}
print_event_internal(iterator->ev);
}
 
 
 
// разность между датами (предполагается что год 1 события c больше года 2 события с1) 
// погрешность +-1
 
int diff_event_internal(struct _event* c, struct _event* c1)
{
int day;
int month;
int year;
int tday;
int tmonth;
int tyear;
int r;
 
if (c == 0) return -1;
 
day = c1->day;
month = c1->month;
year = c1->year;
 
if (year == c->year)
{
if (month == c->month) { return (abs(day - c->day)); }
else
{
r = c->day;
tmonth = c->month;
tmonth--;
while (tmonth != month && tmonth > 0)
{
r += mn[tmonth-1];
if (tmonth-1 == 1&& is_leap_year(c->year) ) r += 1;  
tmonth--;
}
tday = mn[tmonth-1];
if (tmonth-1 == 1 && is_leap_year(c->year)) tday += 1;
r += abs(tday - day);
return r;
}
}
else
{
//
 
r = c->day;
tmonth = c->month;
tmonth--;
while ( tmonth > 0 )
{
r += mn[tmonth-1]; 
tmonth--;
}
tyear = c->year;
tyear--;
while(tyear != year && tyear > 0)
{
r += 364;
if ( is_leap_year(tyear) == 1) r += 1;
tyear--;
}
//
tmonth = 12;
 
while (tmonth != month && tmonth > 0)
{
r += mn[tmonth-1];
if (tmonth-1 == 1 && is_leap_year(c->year) ) r += 1;
tmonth--;
}
tday = mn[tmonth-1];
if (tmonth-1 == 1 && is_leap_year(c->year)) tday += 1;
r += abs(tday - day);
 
return r;
//
}
 
return (-1);
}
 
int diff_event(struct event_node** c)
{
struct event_node* iterator = *c;
 
// событие, с которым происходит сравнение
struct _event c1;
c1.day = 18;
c1.month = 1;
c1.year = 2013;
 
if (iterator == 0) return;
while (iterator->next != 0)
{
printf("%d\n", diff_event_internal(iterator->ev, &c1));
iterator  = iterator ->next;
}
printf("%d\n", diff_event_internal(iterator->ev, &c1));
return 0;
}
 
 
// сборка мусора неавтоматическая (garbage collection unautomatic)
void free_event(struct event_node** c)
{
struct event_node* f;
struct event_node* iterator = *c;
if (iterator == 0) return;
while (iterator->next != 0)
{
f = iterator;
iterator  = iterator ->next;
if (f->ev->event  != 0) free(f->ev->event); f->ev->event = 0;
if (f->ev != 0) free(f->ev); f->ev = 0;
if (f != 0) free(f); f = 0;
}
if (iterator != 0) free(iterator); iterator = 0;
}
 
 
 
 
int main(int argc, char* argv[])
{
struct event_node* first;
first = 0;
enter_event(&first);
enter_event(&first);
enter_event(&first);
print_event(&first);
diff_event(&first);
free_event(&first);
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.03.2015, 06:26
Помогаю со студенческими работами здесь

Структура «время», определить функцию определяющую интервал между двумя значениями времени
Все функции, используемые в программах, должны иметь независимый интерфейс. Стандартные функции работы со стеком и очередью не...

Найти расстояние в днях между двумя датами
Петя точно знает, что до его дня рождения осталось меньше месяца. Помогите Пете посчитать сколько именно дней ему осталось ждать, если D1...

Как найти интервал между двумя DateTimePicker ?
Помогите новичку, нужно найти интервал между двумя датами записанными в DateTimePicker1,2. Например есть даты 2017-02-21 14:00:00 и...

Разница в днях между двумя датами
Здравствуйте. Как найти разницу в количестве дней между текущей датой и следующей - &quot;2000 Jan 15&quot;? Дата передается в качестве...

Рассчитать время между двумя событиями
Здравствуйте. Во время выполнения объявляю 2 переменных(старт и конец процесса, они в свою очередь тоже идут на лейблы). После хочу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru