Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
#1

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

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

Здраствуйте, есть такая задача.
Надо написать счетчик дней с рождения Христоса.
пример.
02010001
вывод 2
02010002
вывод
366
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2010, 18:00     Cчетчик дней с рождения Христа
Посмотрите здесь:

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

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

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

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

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

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

Составить программу, которая по дате рождения человека (день, месяц, год в числовой форме) вычисляет, сколько лет, недель и дней прожил человек - C++
Составить программу, которая по дате рождения человека (день, месяц, год в числовой форме) вычисляет, сколько лет, недель и дней прожил...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 20:26  [ТС]     Cчетчик дней с рождения Христа #21
у меня в контесторе выводит ошибку тест 6.

Kastaneda, ты все условия учел? может что-то забыл?
компилятор с++ 2010.
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
01.12.2010, 20:30     Cчетчик дней с рождения Христа #22
Цитата Сообщение от Hardcore Посмотреть сообщение
в контесторе выводит ошибку тест 6
мне вот это вообще не о чем не говорит.


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

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

Не по теме:

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

ugosdaryn
2 / 2 / 1
Регистрация: 17.12.2009
Сообщений: 77
01.12.2010, 22:11     Cчетчик дней с рождения Христа #25
http://www.cyberforum.ru/cpp-beginne...ead176180.html
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
01.12.2010, 22:53     Cчетчик дней с рождения Христа #26
Kastaneda, я кажется нашел твою ошибку, Вы расчтили условие высокосного года, а при высокосном годе мы учитываем не только 365 или 366 дней, но мы ведь еще учитываем условие февраля, что он может быть как 28 и 29 февраля...
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
02.12.2010, 14:05     Cчетчик дней с рождения Христа #27
Цитата Сообщение от 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))
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
02.12.2010, 14:53     Cчетчик дней с рождения Христа #28
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))
код работает хуже чем предыдущии....
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
02.12.2010, 15:34     Cчетчик дней с рождения Христа #29
Цитата Сообщение от 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;
}
Мне лень большие даты на калькуляторе считать, но вроде правильно.
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
02.12.2010, 19:00     Cчетчик дней с рождения Христа #30
он опять не может пройти тот же тест...
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
02.12.2010, 19:09     Cчетчик дней с рождения Христа #31
Блин, а есть какая-нибудь большая дата, переведенная в дни, чтоб можно было результат сравнивать? А то так сложно сказать - правильный ответ или нет. Я вот небольшие даты смотрел, там все правильно. А как у вас этот тест проходится? Просто, чтоб понять.

Добавлено через 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 минуты
день программиста правильно считает)))
jambas92
58 / 57 / 3
Регистрация: 18.11.2010
Сообщений: 315
02.12.2010, 19:11     Cчетчик дней с рождения Христа #32
Наконецто!!! Ура!!! Задача теперь решена!!! Классный код!!!:dance3:
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 226
Регистрация: 12.12.2009
Сообщений: 7,222
Записей в блоге: 1
Завершенные тесты: 1
02.12.2010, 19:13     Cчетчик дней с рождения Христа #33
Тест пройден? (или что там у вас)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2010, 19:24     Cчетчик дней с рождения Христа
Еще ссылки по теме:

Подсчет количества дней без учета нерабочих праздничных дней в периоде - C++
Нужна программа, которая бы вычисляла дату, на 20 дней больше исходной, но без учета нерабочих праздничных дней в периоде (включая первую...

День рождения - C++
#include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;string&gt; #include&lt;set&gt; #include&lt;algorithm&gt; ...

Дни рождения - C++
Написать программу, пердупреждающую о днях рождениях друзей, желательно с подсказками Дублирование тем запрещено правилами форума (п....

БД содержащая имя и дату рождения - C++
Помогите пожалуйста сегодня срочно надо сдать Write a program that stores names and dates of birth in a database. Extend the program...

Определение счастливого дня рождения - C++
Введите месяц и день своего рождения. Ваш день рождения очень счастливый, просто счасливый и обычный? Очень счастливый - если все остатки...


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

Или воспользуйтесь поиском по форуму:
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
02.12.2010, 19:24  [ТС]     Cчетчик дней с рождения Христа #34
Жамбасс, как ты прошел 5-ый тест?
Yandex
Объявления
02.12.2010, 19:24     Cчетчик дней с рождения Христа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru