Дату по юлианскому календарю получить по современному григорианскому - C (СИ)
Формулировка задачи:
Решение задачи: «Дату по юлианскому календарю получить по современному григорианскому»
##include <stdio.h>; ##include <math.h>; ##includ <conio.h>; void main () { int v1,v2,R,R2,d,m,y; float d1,m1,y1,W; printf ("\nВведите дату\n"); scanf ("%d %d %d", &d, &m, &y); // Зачем ввел y? Чтоб сразу его изменять? for (y=0; y; y++) { // Вылетает сразу из цикла (y==0) if (y%4==0) v2=v2+1; } for (y=0; y; y++) { if (((y%4==0) && (y%100!=0)) || (y%400==0)) v1=v1+1; } printf("y=%d\n", y); // Чтобы убедить тебя, что y=0 // Это называется "отладочная печать" R=v2-v1; //ОПРЕДЕЛЯЕМ ВИСоКОСНЫЙ ГОД ИЛИ НЕТ if (((y%4==0) && (y%100!=0)) || (y%400==0)) W=1; // Не было точки с запятой else W=0; //JANUARY if ((d<R) && (m==1)) { R2=d-R; y1=y-1; m1=12; d1=31-abs(int R2); } if ((d=R) && (m==1)) { y1=y-1; m1=12; d1=31; } if ((d>R) && (m==1)) { y1=y; m1=m; d1=d-R; } //MARCH if ((W=1) && (m==3)) { if (d<R) { y1=y; m1=2; d1=29-abs(int R2); } if (d=R) { y1=y; m1=2; d1=29; } if (d>R) { y1=y; m1=m; d1=d-abs(int R2); } } if ((W=0) && (m==3)) { if (d<R) { y1=y; m1=2; d1=28-abs(int R2); } if (d=R) { y1=y; m1=2; d1=28; } if (d>R) { y1=y; m1=m; d1=d-abs(int R2); } } } // Не было скобки, закрывающей программу //Где вывод результата ?
Объяснение кода листинга программы
include ;
include ;
includ ;
void main ()
{
int v1,v2,R,R2,d,m,y; float d1,m1,y1,W;
printf (\nВведите дату\n
);
scanf (%d %d %d
, &d, &m, &y);
for (y=0; y; y++) {
if (y%4==0)
v2=v2+1;
}
for (y=0; y; y++) {
if (((y%4==0) && (y%100!=0)) || (y%400==0))
v1=v1+1;
}
printf(y=%d\n
, y);
R=v2-v1;
//ОПРЕДЕЛЯЕМ ВИСоКОСНЫЙ ГОД ИЛИ НЕТ
if (((y%4==0) && (y%100!=0)) || (y%400==0))
W=1;
else W=0;
//JANUARY
if ((d<R) && (m==1)) {
R2=d-R;
y1=y-1;
m1=12;
d1=31-abs(int R2);
}
if ((d=R) && (m==1)) {
y1=y-1;
m1=12;
d1=31;
}
if ((d>R) && (m==1)) {
y1=y;
m1=m;
d1=d-R;
}
//MARCH
if ((W=1) && (m==3)) {
if (d<R) {
y1=y;
m1=2;
d1=29-abs(int R2);
}
if (d=R) {
y1=y;
m1=2;
d1=29;
}
if (d>R) {
y1=y;
m1=m;
d1=d-abs(int R2);
}
}
if ((W=0) && (m==3)) {
if (d<R) {
y1=y;
m1=2;
d1=28-abs(int R2);
}
if (d=R) {
y1=y;
m1=2;
d1=28;
}
if (d>R) {
y1=y;
m1=m;
d1=d-abs(int R2);
}
}
//ГДЕ ВЫВОД РЕЗУЛЬТАТА ? - он в комментариях
}
- Переменные v1, v2, R, R2, d, m, y используются для хранения введенных пользователем данных и промежуточных вычислений.
- Переменные d1, m1, y1, W используются для хранения результатов вычислений.
- С помощью функции scanf() пользователь вводит дату в формате dd mm yyyy.
- Переменная y инициализируется значением 0, которое затем изменяется в циклах.
- Циклы предназначены для определения високосного года. В первом цикле y увеличивается на 1 при каждом високосном годе (год, делящийся на 4), а во втором цикле - только при високосных годах, не являющихся столетними (год, делящийся на 400).
- Переменная W инициализируется значением 0, которое затем изменяется в зависимости от значения переменной y.
- С помощью условных операторов if-else проверяется, какой месяц и день введены пользователем, и в зависимости от этого выполняются различные действия.
- В комментариях присутствуют места для вывода результатов вычислений, но в коде они не используются.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д