Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 4
1

MJD календарь

07.12.2018, 04:19. Показов 1057. Ответов 6
Метки нет (Все метки)

вопрос такой, почему не выводит цифры после запятой в результате?

C++ (Qt)
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
91
92
93
94
95
96
97
98
99
100
101
102
//#include stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int sec, min, hour, year, month, day;
    double Mjd;
    int b,a,y,m,c;
    char Exit;
    char d;
    do
    {
 
        cout << "Input date and time (sec min hour day month year): ";
        cin >> sec
            >> min
            >> hour
            >> day
            >> month
            >> year;        
        double x = 7;
        a= ( 14 - month ) / 12;
        y= year + 4800 - a;
        m= month + 12*a - 3;
    //  cout << int((152*m+2)/5);
        Mjd= (day + int((152*m+2)/5) + 365*y + int(y/4) - 32083 + (hour-12)/24 + min/1440 + sec/86400); 
    /*  c= fmod(Mjd,7);
        if (c == 0) { d = 'Monday'; }
        if (c == 1) { d = 'Tuesday';    }
        if (c == 2) { d = 'Wednesday';  }
        if (c == 3) { d = 'Thursday';   }
        if (c == 4) { d = 'Friday'; }
        if (c == 5) { d = 'Saturday';   }
        if (c == 6) { d = 'Sunday'; }
        cout << "mjd = " << Mjd << "\nDay of the week: " << d << endl;
*/
    /*  switch(c)
        {
            case == 0:
                d = "Monday";   
            case == 1:
                d = "Tuesday";
            case == 2:
                d = "Wednesday";
            case == 3:
                d = "Thursday";
            case == 4:
                d = "Friday";
            case == 5:
                d = "Saturday";
            case == 6:
                d = "Sunday";                       
        }
        cout << "mjd = " << Mjd << "\nDay of the week: " << d << endl;
        */
        if (month <= 2) { month += 12; --year; }
        if ((10000 * year + 100 * month + day) <= 15821004)
            b = -2 + ((year + 4716) / 4) - 1179; //Julian calendar
        else b = (year / 400) - (year / 100) + (year / 4); //Gregorian calendar
    //  Mjd = 365*year - 679004 + b + int(30.6001*(month + 1)) + day + (hour-12)/24 + min/1440 + sec/86400;
    
    //  cout << "MJD = " << Mjd << endl;
        c= fmod(Mjd, x);
        c=c+2;
        if (c == 7) { c = 0 ;}
        if (c == 8) {c = 1;}
        if (c == 9) {c = 2;}
    //  cout << c;
    /*  if (c == 0) { d = *"Monday";    }
        if (c == 1) { d = *"Tuesday";   }
        if (c == 2) { d = *"Wednesday"; }
        if (c == 3) { d = *"Thursday";  }
        if (c == 4) { d = *"Friday";    }
        if (c == 5) { d = *"Saturday";  }
        if (c == 6) { d = *"Sunday";    }*/
        if (c == 0) { d = *"1"; }
        if (c == 1) { d = *"2"; }
        if (c == 2) { d = *"3"; }
        if (c == 3) { d = *"4"; }
        if (c == 4) { d = *"5"; }
        if (c == 5) { d = *"6"; }
        if (c == 6) { d = *"7"; }
        cout.setf(ios::fixed);
//      cout.setf(ios::scientific);
//      cout.setf(ios::showpoint);
//      cout.precision(5);
        cout << "MJD = " << Mjd;    
    //  for( int i = 0; i < 10; i++ )   {   cout << d[i];   };
        cout << "\nDay of the week: " << d ;
        
        cout << endl;
        cout << "\nExit? (y/n): ";
        
 
        cin >> Exit;
 
    }
    while (!(Exit == 'y' || Exit == 'Y'));
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2018, 04:19
Ответы с готовыми решениями:

Календарь в С
Задали задание написать календарь в С. Что бы вверху были дни недели написаные в строчку, а под...

Календарь
Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, ... , 6 — суббота, 7 —...

Календарь
Не могу доделать календарь, а именно просто хочу чтобы был сдвиг на необходимые дни. Изначально...

календарь
Даны натуральные числа А,В, С, которые обозначают число, месяц и год. Получить тройку чисел,...

6
7043 / 6063 / 2755
Регистрация: 14.04.2014
Сообщений: 25,968
07.12.2018, 12:46 2
Откуда им взяться, если ты всё вычисляешь с целыми типами?
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 4
07.12.2018, 12:55  [ТС] 3
Значение mjd ведь в типе дабл, или нужно чтобы вообще все переменные были с плавающей точкой?
0
7043 / 6063 / 2755
Регистрация: 14.04.2014
Сообщений: 25,968
07.12.2018, 12:58 4
Лучший ответ Сообщение было отмечено TopAmiob как решение

Решение

В формуле (28) ты два раза явно к int приводишь и все константы целые. Значит в double попадёт целое число.
Если, например, min/1440 должно вычислять как вещественное, то пиши
C++
1
min / 1440.0
0
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 4
07.12.2018, 13:00  [ТС] 5
Спасибо, понял)
0
Продавец времени
6034 / 3312 / 766
Регистрация: 12.03.2015
Сообщений: 15,805
07.12.2018, 13:00 6
Цитата Сообщение от TopAmiob Посмотреть сообщение
Значение mjd ведь в типе дабл
В него записывается результат целочисленной операции. Строка 28, можешь убедиться.
Цитата Сообщение от TopAmiob Посмотреть сообщение
или нужно чтобы вообще все переменные были с плавающей точкой?
А чо за условие задачи? А то у меня телепатор за неуплату отключили.
1
0 / 0 / 0
Регистрация: 07.12.2018
Сообщений: 4
07.12.2018, 13:07  [ТС] 7
Задача была написать программу которая высчитывает модифицированный юлианский календарь по датам григорианского, и выводит день недели.
Благодарю, я не учел суету с типами переменных:'��
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2018, 13:07

Универсальный календарь
Требуется программа &quot;универсальный календарь&quot; для расчета дня недели для заданной даты, отображения...

Восточный Календарь
Давным давно, в одной альтернативной вселенной, в восточном календаре был принят 6060-летний цикл,...

Восточный календарь
Нужна помощь,ну или кто может написать код программы,про Восточный календарь! Сам текст: В...

Юлианский календарь
Здаров. Посмотрите пожалуйста задачу И попробуйте решить по разбору. вот что получилось у...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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