4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200

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

01.12.2010, 18:00. Показов 4723. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru