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

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

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

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

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

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

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

33
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 18:08
Цитата Сообщение от Hardcore Посмотреть сообщение
пример.
02010001
вывод 2
02010002
вывод
366
вообще ни чего не понял.



Цитата Сообщение от Hardcore Посмотреть сообщение
счетчик дней с рождения Христоса.
Взять сегодняшнюю дату и преобразовать ее в кол-во дней.

Добавлено через 1 минуту
Цитата Сообщение от Kastaneda Посмотреть сообщение
вообще ни чего не понял.
а понял, ну да, так как написал выше.
1
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 18:10  [ТС]
ну типа,
02 день 01 месяц 0001 год
значит вообщем прошло 2 дня
01 день 01 месяц 0002 год
прошло 366 дней
я ввожу произвольный ввод и он выводит общее количество дней с рождения Христоса. С начало нашей эрой до любой произвольной даты.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 18:12
Цитата Сообщение от Hardcore Посмотреть сообщение
С начало нашей эрой
Да, так корректней, рождество же у нас 7.01. (у католиков вообще 25.12)
1
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 18:17  [ТС]
главное условие ввод должен быть одной строкой без пробелов
примерно вот так:
23072009
0
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
01.12.2010, 18:41
Я так же решаю эту задачу!!! Я его решил с помощью int, но даты нужно ввести строкой! переделайте мне мой код!!!

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
 
using namespace std;
 
int main ()
{  
        int d, m, y;
 
        cin >> d >> m >> y;
 
        int D=0, M, Y;
        int god=365;
        int Vgod=365;
 
        Y=y-1;
        M=m-1;
        if (Y%4==0 && Y%100!=0 || Y%400==0)
        {
                Y=Y*Vgod;
        }
        else
        {
                Y=Y*god;
        }
 
        if (M==1)
        {
                M=M*31;
        }
 
        if (M==2 && (Y%4==0 && Y%100!=0 || Y%400==0))
        {
                M=M*29;
        }
        else
        {
                M=M*28;
        }
 
        if (M==3)
        {
                M=M*31;
        }
 
        if (M==4)
        {
                M=M*30;
        }
 
        if (M==5)
        {
                M=M*31;
        }
 
        if (M==6)
        {
                M=M*30;
        }
 
        if (M==7)
        {
                M=M*31;
        }
 
        if (M==8)
        {
                M=M*31;
        }
 
        if (M==9)
        {
                M=M*30;
        }
 
        if (M==10)
        {
                M=M*31;
        }
 
        if (M==11)
        {
                M=M*30;
        }
 
        D=Y+M+d;
 
        cout << D;
 
        return 0;
}
1
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 18:52  [ТС]
а если cingetline написать?
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 18:58
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 if (Y%4==0 && Y%100!=0 || Y%400==0)
        {
                Y=Y*Vgod;
        }
        else
        {
                Y=Y*god;
        }
 
        if (M==1)
        {
                M=M*31;
        }
 
        if (M==2 && (Y%4==0 && Y%100!=0 || Y%400==0))
        {
                M=M*29;
        }
        else
        {
                M=M*28;
        }
 
        if (M==3)
        {
                M=M*31;
        }
 
        if (M==4)
        {
                M=M*30;
        }
 
        if (M==5)
        {
                M=M*31;
        }
 
        if (M==6)
        {
                M=M*30;
        }
 
        if (M==7)
        {
                M=M*31;
        }
 
        if (M==8)
        {
                M=M*31;
        }
 
        if (M==9)
        {
                M=M*30;
        }
 
        if (M==10)
        {
                M=M*31;
        }
 
        if (M==11)
        {
                M=M*30;
        }
Кррруто))


Я бы так сделал:
1)кол-во лет умножаем на 365
2)к этому числу прибавляем кол-во високосных лет (на включая тот, который считаем)
3)к получившемуся числу прибавляем кол-во месяцев, умноженное на 30
4)если кол-во месяцев четное - прибавляем кол-во месяцев деленное на 2, если не четное - прибавляем кол-во месяцев деленное на 2, и плюс 1
5)если считаемый год високосный, (и кол-во месяцев <=2), от итогового числа отнимаем 1, если не високосный - отнимаем 2
вот и все)
0
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
01.12.2010, 19:01
Hardcore, если написать
C++
1
cin.getline
то придется работать с символами и переводить их в int, в этом та у меня и проблема!!! Пробовал функцию atoi, не помогает...

Добавлено через 2 минуты
Kastaneda, мои же код работает верно??? как сделать так что бы он запускался с помощью строки??? то есть что бы мы вводили одной строкой???
0
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 19:01  [ТС]
Kastaneda, а как сдлеать ввод полной строкой?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
01.12.2010, 19:04
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <string>
 
int main(){
  std::string date;
 
  std::cout << "Today is: ";
  std::cin >> date;
  std::cout << "A long-long time ago or never born at all!" << std::endl;
 
  return 0;
}
Цитата Сообщение от Hardcore Посмотреть сообщение
а если cingetline написать?
бумага всё стерпит...
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 19:05
Цитата Сообщение от jambas92 Посмотреть сообщение
мои же код работает верно???
А как вы проверяли? Я сомневаюсь, судя по:
C++
1
2
3
4
5
6
7
8
9
int god=365;
        int Vgod=365;
        if (Y%4==0 && Y%100!=0 || Y%400==0)
        {
                Y=Y*Vgod;
        }
        else
        {
                Y=Y*god;

По-позже со строками выложу. С или С++ надо?
1
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
01.12.2010, 19:08
c++))))

Добавлено через 1 минуту
А как вы проверяли? Я сомневаюсь, судя по:
C++
1
2
3
4
5
6
7
8
9
int god=365;
        int Vgod=365;
        if (Y%4==0 && Y%100!=0 || Y%400==0)
        {
                Y=Y*Vgod;
        }
        else
        {
                Y=Y*god;
это я проверяю условие, год имеет 365 или 366 дней
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 19:12
Даже если учесть, что Vgod=365 этто опечатка (должно быть 366), то все равно не правильно. Если проверяемый год высокосный, вы умножаете все года на 366, а нужно только каждый четвертый, а все остальные *на 365.
1
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
01.12.2010, 19:24
Kastaneda,
ммм, точно!!! техническая ошибка)))
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 20:03
Вот:
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
#include<iostream>
using std::string;
using std::cout;
using std::cin;
using std::endl;
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-1)*30;
    if((month-1)%2)
        days+=(month-1)/2+1;
    else
        days+=(month-1)/2;
    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;
}

Не по теме:

Цитата Сообщение от jambas92 Посмотреть сообщение
ммм, точно!!! техническая ошибка)))
это называется "особенность программы" )))

2
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 20:09  [ТС]
Kastaneda, в этом коде при компиляций есть такая ошибка:error C3861: 'getline': identifier not found
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 20:12
У меня gcc так компилит, вам похоже нужно подключить string.h.
1
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
01.12.2010, 20:15  [ТС]
а всё)
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
01.12.2010, 20:21
как это "перестает читать" ?

Добавлено через 15 секунд
Hardcore, чем компилите?

Добавлено через 4 минуты
Блин, если у вас компилятор не совсем старый (хз почему, но студенты здесь какими-то древними борландами пользуюстся, может их так учат) нужно писать так:
C++
1
#include<string>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2010, 20:21
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[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-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru