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

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

01.12.2010, 18:00. Показов 4556. Ответов 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 / 3205 / 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 / 3205 / 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 / 3205 / 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 / 3205 / 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 / 3205 / 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru