Форум программистов, компьютерный форум, киберфорум
Python: ИИ, нейросети, ML, агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/222: Рейтинг темы: голосов - 222, средняя оценка - 4.62
 Аватар для LiJuan_Jhao
22 / 22 / 0
Регистрация: 11.11.2019
Сообщений: 108

Биоритмы. Вывести значение биоритмов физического, эмоционального, интеллектуального, округленные до сотых

08.02.2020, 19:29. Показов 48905. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Существует предположение о существовании трех биологических ритмов человека: физического, эмоционального и интеллектуального.
Согласно этому предположению, человек, как часть природы, представляется связанным с разными небесными телами, которые его окружают: звездами, Солнцем, Луной и, конечно же, Землей.
Считается, что физический биоритм формируется за счет магнитного поля Земли с длительностью периода примерно 23 дня, эмоциональный зависит от лунных циклов и вращения Луны вокруг Земли с периодом примерно 28 суток, интеллектуальный с периодом 33 дня зависит от вращения Солнца по своей орбите относительно Земли. Пусковым механизмом для всех трех биоритмов является рождение человека.
Графики биоритмов представляют собой синусоиды. Значение биоритма в любой день для каждого человека можно рассчитать по формуле:
B = sin((2 ∗ pi ∗ T)∕P) ∗ 100%,
где P - период биоритма в сутках, T - количество дней, прошедших с рождения человека до момента расчета.
Напишите программу, которая производит расчет биоритмов по введенным датам.

Формат ввода
Строка, содержащая день, месяц и год рождения человека.
Строка, содержащая день, месяц и год даты расчета биоритма.
Обе даты вводятся в формате ДД.ММ.ГГГГ

Формат вывода
Значение биоритмов физического, эмоционального, интеллектуального, округленные до сотых. Каждое значение с новой строки.
Пример 1
Ввод
28.07.1988
16.03.2009
Вывод
-81.7
78.18
75.57

Пример 2
Ввод
01.01.2010
31.12.2019
Вывод
-99.77
62.35
-75.57

Примечания
Гарантируется, что во входных данных вторая дата позднее, чем первая. В тестах выводится с округлением до 2 знаков после запятой, Вам его делать не надо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2020, 19:29
Ответы с готовыми решениями:

Вывести округленные значения чисел из данного набора
Дано целое число N и набор из N вещественных чисел. Вывести в том же порядке округленные значения всех чисел из данного набора (как...

Вывести в том же порядке округленные значения всех чисел
Series7. Дано целое число N и набор из N действительных чисел. Вывести в том же порядке округленные значения всех чисел из данного набора...

Вывести в том же порядке округленные значения всех чисел
Дано целое число N и набор из N вещественных чисел. Вывести в том же порядке округленные значения всех чисел из данного набора (как целые...

10
 Аватар для regio1961
601 / 293 / 178
Регистрация: 06.06.2016
Сообщений: 552
10.02.2020, 19:42
Лучший ответ Сообщение было отмечено CoMeLLa как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import datetime
from math import sin, pi
 
def bio_rhythm( P, T ):
    return sin( 2.0*pi*T / P ) * 100
 
date_entry = input( 'Введите дату рождения в формате dd.mm.YYYY ' )
year0, month0, day0 = map( int, date_entry.split('.') )
date0 = datetime.date( day0, month0, year0 )
 
date_entry = input( 'Введите дату расчета в формате dd.mm.YYYY ' )
year, month, day = map( int, date_entry.split('.') )
date = datetime.date( day, month, year )
 
T = (date - date0).days
 
print( bio_rhythm( 23, T ) )   
print( bio_rhythm( 28, T ) )
print( bio_rhythm( 33, T ) )
9
48 / 44 / 4
Регистрация: 09.12.2019
Сообщений: 27
03.03.2020, 14:28
Python
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
import datetime as datetime
import math
 
dateBd = input().split('.')
bioD = input().split('.')
today = datetime.date.today()
dateBday = datetime.date(int(dateBd[2]), int(dateBd[1]), int(dateBd[0]))
bioDay = datetime.date(int(bioD[2]), int(bioD[1]), int(bioD[0]))
 
P = bioDay - dateBday
P = str(P)
p = P.split()
P = int(p[0])
T1 = 23
T2 = 28
T3 = 33
 
sinus1 = (2 * math.pi * P) / T1
B1 = math.sin(sinus1) * 100
 
sinus2 = (2 * math.pi * P) / T2
B2 = math.sin(sinus2) * 100
 
sinus3 = (2 * math.pi * P) / T3
B3 = math.sin(sinus3) * 100
 
print(round(B1, 2))
print(round(B2, 2))
print(round(B3, 2))
6
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,243
03.03.2020, 19:36
На базе поста regio1961 написал чуть покороче
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from datetime import datetime
from math import sin, pi
 
def bio_rhythm( P, T ):
    return sin( 2.0*pi*T / P ) * 100
 
date_entry = input( 'Введите дату рождения в формате dd.mm.YYYY:' )
date0 = datetime.strptime(date_entry, '%d.%m.%Y')
 
date_entry = input( 'Введите дату расчета в формате dd.mm.YYYY:' )
date1 = datetime.strptime(date_entry, '%d.%m.%Y')
 
T=date1.toordinal()-date0.toordinal()
 
print( bio_rhythm( 23, T ) )   
print( bio_rhythm( 28, T ) )
print( bio_rhythm( 33, T ) )
2
7 / 7 / 0
Регистрация: 04.12.2020
Сообщений: 40
12.03.2021, 21:08
Python
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
import datetime as dt
from math import sin, pi
 
a = input()
year0, month0, day0 = a.split('.')
year0 = int(year0)
month0 = int(month0)
day0 = int(day0)
b = input()
year1, month1, day1 = b.split('.')
year1 = int(year1)
month1 = int(month1)
day1 = int(day1)
date = dt.date(day0, month0, year0)
date1 = dt.date(day1, month1, year1)
p = (date1 - date)
T = p.days
P = 23
B = sin((2 * pi * T) / P) * 100
print(round(B, 2))
P = 28
B = sin((2 * pi * T) / P) * 100
print(round(B, 2))
P = 33
B = sin((2 * pi * T) / P) * 100
print(round(B, 2))
0
15 / 14 / 1
Регистрация: 16.11.2019
Сообщений: 33
17.02.2022, 15:11
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import math
import datetime as dt
 
birth = list(map(int, input().split(".")))
birth = dt.date(birth[2], birth[1], birth[0])
now = list(map(int, input().split(".")))
now = dt.date(now[2], now[1], now[0])
 
ans1 = round(math.sin((2 * math.pi * (now - birth).days) / 23) * 100, 2)
ans2 = round(math.sin((2 * math.pi * (now - birth).days) / 28) * 100, 2)
ans3 = round(math.sin((2 * math.pi * (now - birth).days) / 33) * 100, 2)
print(ans1)
print(ans2)
print(ans3)
Как-то так
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
18.02.2022, 03:56
Python
1
2
3
4
5
6
7
8
9
from datetime import datetime
from math     import sin, pi
#==============================================================================
s_beg    = input( 'дата рождения ДД.ММ.ГГГГ: ' )
s_end    = input( 'дата расчета  ДД.ММ.ГГГГ: ' )
date_obj = lambda s_date: datetime.strptime( s_date, '%d.%m.%Y' )
T = ( date_obj(s_end) - date_obj(s_beg) ).days
for P in (23,28,33):
    print( sin( 2.0 * pi * T / P ) * 100 )
2
5 / 5 / 0
Регистрация: 07.11.2021
Сообщений: 21
15.03.2022, 23:08
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import datetime
from math import sin, pi
 
    
def bio_rhythm(P, T):
    return sin(2.0 * pi * T / P) * 100
 
 
date_entry = input()
year0, month0, day0 = map(int, date_entry.split('.'))
date0 = datetime.date(day0, month0, year0)
date_entry = input()
year, month, day = map(int, date_entry.split('.'))
date = datetime.date(day, month, year)
T = (date - date0).days
print(bio_rhythm(23, T))   
print(bio_rhythm(28, T))
print(bio_rhythm(33, T))
0
0 / 0 / 0
Регистрация: 11.06.2022
Сообщений: 1
11.06.2022, 22:50
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
#include <stdio.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <locale.h>
 
#define _USE_MATH_DEFINES
#ifndef M_PI
#define M_PI
#endif
 
int getDays() {
    time_t timer;
    struct tm y2k = {0};
    double day;
 
    y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
    y2k.tm_year = 122;
    y2k.tm_mon = 5;
    y2k.tm_mday = 1;
 
    time_t year = 122;
    printf("year:");
    scanf("%lld", (long long *) &year);
    y2k.tm_year = year - 1900;
 
    time_t mon = 5;
    printf("mon:");
    scanf("%lld", (long long *) &mon);
    y2k.tm_mon = mon - 1;
 
    time_t mday = 1;
    printf("mday:");
    scanf("%lld", (long long *) &mday);
    y2k.tm_mday = mday;
 
    time(&timer);  /* get current time; same as: timer = time(NULL) */
    int seconds = difftime(timer,mktime(&y2k));
    int days = seconds/60/60/24;
 
    return days;
}
 
char* getSignBioritm(int value) {
    return value > 0 ? "+" : "-";
}
 
int main ()
{
    setlocale(LC_ALL, "Russian");
 
    const int PERIOD_PHYSICAL_DAY = 23;
    const int PERIOD_EMOTIONAL_DAY = 28;
    const int PERIOD_INTELLECTUAL_DAY = 33;
 
    int days = getDays();
 
    int actualFhysicalBioritm = sin(2.0 * M_PI * days / PERIOD_PHYSICAL_DAY) * 100;
    int actualEmotionalBioritm = sin(2.0 * M_PI * days / PERIOD_EMOTIONAL_DAY) * 100;
    int actualIntellectualBioritm = sin(2.0 * M_PI * days / PERIOD_INTELLECTUAL_DAY) * 100;
 
    /*DEV*/
    printf("\коэффициенты: \n Физический%d\n",actualFhysicalBioritm);
    printf("Эмоциональный %d\n",actualEmotionalBioritm);
    printf("интеллектуальный%d\n",actualIntellectualBioritm);
    /*DEV*/
 
    char* signFhysicalBioritm = getSignBioritm(actualFhysicalBioritm);
    char* signEmotionalBioritm = getSignBioritm(actualEmotionalBioritm);
    char* signIntellectualBioritm = getSignBioritm(actualIntellectualBioritm);
 
    char result[120];
    sprintf(
        result, "%s%s\n%s%s\n%s%s\n",
        "Физический: ", signFhysicalBioritm,
        "Эмоциональный: ", signEmotionalBioritm,
        "интеллектуальный: ", signIntellectualBioritm
    );
 
    printf("\nResult:\n%s", result);
 
    return 0;
}
0
1 / 1 / 0
Регистрация: 09.04.2024
Сообщений: 4
12.04.2024, 11:16
вот код без ошибок для Яндекс Лицея:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import datetime
from math import sin, pi
 
    
def bio_rhythm(P, T):
    return sin(2.0 * pi * T / P) * 100
 
    
date_entry = input()
year0, month0, day0 = map(int, date_entry.split('.'))
date0 = datetime.date(day0, month0, year0)
 
date_entry = input()
year, month, day = map(int, date_entry.split('.'))
date = datetime.date(day, month, year)
 
T = (date - date0).days
 
print(bio_rhythm(23, T))   
print(bio_rhythm(28, T))
print(bio_rhythm(33, T))
1
12 / 11 / 3
Регистрация: 04.11.2024
Сообщений: 101
24.02.2025, 17:41
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from math import pi, sin
from datetime import date
a = input().split('.')
b = input().split('.')
a[0], a[-1], b[0], b[-1] = a[-1], a[0], b[-1], b[0]
a, b = "-".join(a), "-".join(b)
aa, bb = date.fromisoformat(a), date.fromisoformat(b)
delta, b1, b2, b3 = abs(aa - bb), 23, 28, 33
def s(ar):
    return round(cur := sin((2 * pi * delta.days) / ar) * 100, 2)
print(s(b1))
print(s(b2))
print(s(b3))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2025, 17:41
Помогаю со студенческими работами здесь

Вывести в том же порядке округленные значения всех чисел из данного набора
Дано целое число N и набор из N вещественных чисел. Вывести в том же порядке округленные значения всех чисел из данного набора (как целые...

Массив: На экран вывести минимальное и максимальное из списка, округленные до двух знаков после запятой
Напишите программу, которая запрашивает у пользователя шесть вещественных чисел. На экран выводит минимальное и максимальное из них,...

Округлить значение до десятых или до сотых
Подскажите пожалуйста как в данной процедуре округлить значение до десятых или до сотых. procedure compl.vuvod(z : compl); begin ...

Дан набор из N положительных вещественных чисел Вывести в том же порядке округленные значения всех чисел
3)Дано целое число N и набор из N вещественных чисел. Вывести в том же порядке округленные значения всех чисел из данного набора (как целые...

Как вывести целое число округленным до сотых
Нужно, чтобы программа выдавала все числа с двумя знаками после запятой. (например, 1.23, 4.00, 76.98) С нецелыми числами все работает...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru