Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200

Cчетчик дней с рождения Христа

01.12.2010, 18:00. Показов 4703. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, есть такая задача.
Надо написать счетчик дней с рождения Христоса.
пример.
02010001
вывод 2
02010002
вывод
366
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2010, 18:00
Ответы с готовыми решениями:

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

Задача о совпадении дней рождения
Пожалуйста, кто-нибудь помагите решить задачу, очень надо для дипломной работы! Заранее всех благодарю за помощь!!!:) Задача состоит в...

Найти количество дней до дня рождения
Помогите,пожалуйста написать программу на C++. Создать функцию, которая принимает на вход дат рождения и текущую дату и...

33
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 20:26  [ТС]
Студворк — интернет-сервис помощи студентам
у меня в контесторе выводит ошибку тест 6.

Kastaneda, ты все условия учел? может что-то забыл?
компилятор с++ 2010.
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 20:30
Цитата Сообщение от Hardcore Посмотреть сообщение
в контесторе выводит ошибку тест 6
мне вот это вообще не о чем не говорит.


Цитата Сообщение от Hardcore Посмотреть сообщение
ты все условия учел? может что-то забыл?
перед тем, как код сюда выложить я реально с калькулятором ответы проверял. Все работает!!!

Давай разбираться - какая ошибка ?
0
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 20:34  [ТС]
Нам просто тесты вообще не дают и я не знаю даже в чем проблема.
я тоже посчитал там всё правильно. )
ладно скорее всего препад не так тесты вбил. спасибо) очень помог)
0
01.12.2010, 20:45

Не по теме:

Цитата Сообщение от Hardcore Посмотреть сообщение
скорее всего препад не так тесты вбил
может препод чего-то не учел)))

1
 Аватар для ugosdaryn
3 / 3 / 1
Регистрация: 17.12.2009
Сообщений: 77
01.12.2010, 22:11
https://www.cyberforum.ru/cpp-... 76180.html
0
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
01.12.2010, 22:53
Kastaneda, я кажется нашел твою ошибку, Вы расчтили условие высокосного года, а при высокосном годе мы учитываем не только 365 или 366 дней, но мы ведь еще учитываем условие февраля, что он может быть как 28 и 29 февраля...
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
02.12.2010, 14:05
Цитата Сообщение от jambas92 Посмотреть сообщение
но мы ведь еще учитываем условие февраля, что он может быть как 28 и 29 февраля...
Все верно, я и это учел:
C++
1
2
3
4
5
6
if(year%4==0&&year%100!=0||year%400==0){
                if(month>=2)
                        days-=1;
                }
        else if(month>=2)
                        days-=2;
а с чего вы взяли, что в коде ошибка?

Добавлено через 1 час 31 минуту
Может кто-то не знает, то вот:
из википедии:
блаблабла... На будущее же была введена поправка, обеспечивающая более точное соответствие с солнечным исчислением, которая заключается в том, что из каждых 400 лет должны были быть исключены три високосных года. Таким образом, ошибка в один день накапливается лишь через 3333 года. Исключение трёх високосных лет за четыре века достигалось следующим правилом. Если номер года заканчивается не на два нуля, то он считается високосным тогда, когда номер года кратен четырём (например, 1996, 2004, 2008 годы). Если год заканчивается на два нуля, то он високосный только тогда, когда число сотен в нём также кратно четырём (например, 1600, 2000, 2400 годы). Во всех остальных случаях год считается невисокосным (например, 1900 и 2100 годы).
Добавлено через 2 часа 51 минуту
Я нашел ошибку))) Вообще случайно, пишу код в другую тему (там тоже работа с датами) и тут меня осенило))) Попозже код подправлю, сейчас занят.

Добавлено через 12 минут
строку:
C++
1
if((month-1)%2)
заменить на:
C++
1
if((month-1)==1||(month-1)==3||(month-1)==5||(month-1)==7||(month-1)==8||(month-1)==10||(month-1)==12)
можно эту проверку короче придумать, но пока так...

Добавлено через 11 минут
да, можно сделать так:
C++
1
if((month-1)<8 ? (month-1)%2 : !((month-1)%2))
1
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
02.12.2010, 14:53
Kastaneda, я пробовал вместо
C++
1
2
3
    
 
if((month-1)%2)
подставлять и
C++
1
if((month-1)==1||(month-1)==3||(month-1)==5||(month-1)==7||(month-1)==8||(month-1)==10||(month-1)==12)
и
C++
1
2
3
    
 
if((month-1)<8 ? (month-1)%2 : !((month-1)%2))
код работает хуже чем предыдущии....
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
02.12.2010, 15:34
Цитата Сообщение от jambas92 Посмотреть сообщение
код работает хуже чем предыдущии....
ЭЭ, предыдущий не плохо работал, просто считал не точно)))

Давайте разбираться, мне самому уже интересно. Что не так? Считает не правильно? Или что?

Добавлено через 10 минут
Да, всязи с изменившимя условием, вот эти строчки неправильные:
C++
1
2
3
4
if((month-1)%2)
                days+=(month-1)/2+1;
        else
                days+=(month-1)/2;
надо переделать...

Добавлено через 27 минут
А теперь:
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
#include<iostream>
using std::string;
using std::cout;
using std::cin;
using std::endl;
int month_to_days(int,int);
int leap_years(int y);
int main(){
        int day,month,year,days;
        string Date;
        cout<<"Enter date (day/month/year) : ";
        getline(cin,Date);
        day=(Date.at(0)-'0')*10+Date.at(1)-'0';
        month=(Date.at(2)-'0')*10+Date.at(3)-'0';
        year=(Date.at(4)-'0')*1000+(Date.at(5)-'0')*100+(Date.at(6)-'0')*10+Date.at(7)-'0';
        days=(year-1)*365+leap_years(year);
        days+=month_to_days(month-1,year);
        days+=day;
        if(year%4==0&&year%100!=0||year%400==0){
                if(month>=2)
                        days-=1;
                }
        else if(month>=2)
                        days-=2;
        cout<<"Number days "<<days<<endl;
        cin.get();
        return 0;
}
int leap_years(int y){
        int ly=0;
        for(int i=1;i<y;i++)
                if(i%4==0&&i%100!=0||i%400==0)
                        ++ly;
        return ly;
}
int month_to_days(int m,int y){
    int day=0;
    for(int i=1;i<=m;i++){
                if((i==2)&&(y%4==0&&y%100!=0||y%400==0))
                     day+=29;
                else if(i==2)
                        day+=28;
                else if(i<8 ? i%2 : !(i%2))
                        day+=31;
                else day+=30;
    }
    return day;
}
Мне лень большие даты на калькуляторе считать, но вроде правильно.
0
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
02.12.2010, 19:00
он опять не может пройти тот же тест...
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
02.12.2010, 19:09
Блин, а есть какая-нибудь большая дата, переведенная в дни, чтоб можно было результат сравнивать? А то так сложно сказать - правильный ответ или нет. Я вот небольшие даты смотрел, там все правильно. А как у вас этот тест проходится? Просто, чтоб понять.

Добавлено через 4 минуты
вот это:
C++
1
2
3
4
5
6
 if(year%4==0&&year%100!=0||year%400==0){
                if(month>=2)
                        days-=1;
                }
        else if(month>=2)
                        days-=2;
уберите из кода, я же ф-цию для месяцев написал, а это просто забыл убрать.

Добавлено через 2 минуты
день программиста правильно считает)))
1
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
02.12.2010, 19:11
Наконецто!!! Ура!!! Задача теперь решена!!! Классный код!!!:dance3:
0
 Аватар для Kastaneda
5232 / 3206 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
02.12.2010, 19:13
Тест пройден? (или что там у вас)
0
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
02.12.2010, 19:24  [ТС]
Жамбасс, как ты прошел 5-ый тест?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2010, 19:24

Юбилей определить кол-во дней до дня рождения
Всем, Hello у меня программа не прошла проверку по високосному году и кажется мне еще каких-то условий не хватает, прошу помочь. В...

Расчет количество дней прожитых со дня рождения
Сабж. Может есть у кого исходный код который рассчитывает количество прожитых дней со дня рождения(сегодняшний день и день рождения офк...

Класс Персона, подсчет количества дней оставшихся до следующего дня рождения
Возникла проблема (труднорешаемая у меня). Суть задания: Создайте класс Persona, который содержит информацию о ФИО человека, дате...

Программа определяет сколько дней от текущей даты осталось до нового года и дня рождения
Программа определяет сколько дней от текущей даты осталось до нового года и дня рождения ,текущую дату и день рождения вводится с...

На основе введенной даты рождения и текущей даты сообщить пользователю, сколько он прожил дней
3. Написать программу, которая на основе введенной даты рождения и текущей даты сообщает пользователю, сколько он прожил дней. Принять во...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru