Я не буду прилагать слишком много усилий к тому, чтобы вам понравиться, не нравлюсь - вы мои враги на следующие 2 часа.
Помогите, пожалуйста, с задачей на С++
Описать класс "Историческое событие" с полями "число", "месяц", "год", "событие" и следующими методами:
а)ввода исторического события (сделано)
б) вывода исторического события (сделано)
в) вычисляющего интервал в днях, прошедший между двумя заданными историческими событиями (есть задумки, но не могу реализовать)
г) сортирующую массив событий по полю "событие". (вообще глухо)
класс описал, есть метод, определяющий, високосный год или нет. Опыта в программирование не хватает, чтобы додуматься до остального.(
помогите, пожалуйста!
Описать класс "Историческое событие" с полями "число", "месяц", "год", "событие" и следующими методами:
а)ввода исторического события (сделано)
б) вывода исторического события (сделано)
в) вычисляющего интервал в днях, прошедший между двумя заданными историческими событиями (есть задумки, но не могу реализовать)
г) сортирующую массив событий по полю "событие". (вообще глухо)
класс описал, есть метод, определяющий, високосный год или нет. Опыта в программирование не хватает, чтобы додуматься до остального.(
помогите, пожалуйста!
Пример сортировки массива поищите в гугле, это достаточно банальная задача, сотни раз описаная. Вот такие пока идеи, может, и не совсем верные.
Например, у нас есть 25.05.2008 и 03.08.2009. Первая дата меньше, поэтому надо вычислить, сколько дней в данном месяце (конкретно здесь в мае 31 день) и вычесть число (31-25=6), затем складываем с числом второй даты (6+3=9), это и будет начальное число. Затем к нему необходимо в цикле прибавлять количество дней каждого месяца между ними, проверяя, високосный год или нет. Алгоритм в голове уже есть, а вот на реализацию на С не хватает.) боюсь, тут только поможет С-специалист.
если например выводить разницу между датами в виде Х дней У месяцев К лет. тогда нужно будет по отдельности вычесть одну дату(число, месяц, год) из другой. если я правильно понимаю то взяв эти разности по модулю будет не важно как вычитать из большей меньшую или наоборот.
Это-то понятно. Но тогда надо каждый месяц переводить в дни. Надо знать, что за месяц и сколько в нём дней. А если выпадет февраль, то ещё и проверять, високосный год или нет
kugelschreiber
Спасибо за попытку.
можно попробовать сделать отсчет вроде как от нулевого дня попробовать найти закономерность из этого числа вычислять год меся и день и обратно
типа так
заранее знаю что синтаксиса я не знаю)
function int DateToDays(int day, int month, int year)
{d = 0;
for(int i = 1; i <= year; i++)
{
if (Visokosnyj(year)) {d += 366;}
else {d += 365;}
}
for(int i = 1; i <= month; i++)
{
case i
{
when 1,3,5,7,8,10,12:
{
d += 31;
break;
}
when 4,6,9,11
{
d += 30;
break;
}
when 2
{
if (Visokosnyj(year)) {d += 29}
else {d+= 28}
break;
}
}
}
d+= days;
return d ;
}
а разницу между интеджерами уже не трудно найти
кстати чтоб не проверять какая дата больше а какая меньше, разницу можно брать по модулю. abs()
Сортирующие алгоритмы нужны?
Нет, благодарю, уже не актуально.