Так что я должен написать программу, которая считает дни с 1.1.1. Кроме того, я должен использовать григорианский календарь все это время (хотя он не использовался с 1.1.1). В любом случае, вот что я написал, но я уверен, что у него есть некоторые ошибки:
#include <stdio.h>
int main()
{
int d, m, r;
printf("Podaj dzien, miesiac i rok\n");
scanf("%d %d %d", &d, &m, &r);
printf("%d", iledni(d, m, r));
return 0;
}
int iledni(int d, int m, int r)
{
int dni,x;
int msc[12]={0,31,59,90,120,151,181,212,243,273,304,334};
dni=r*365+msc[m-1]+d-1;
dni=dni+(int)((r-1)/4)-(int)((r-1)/100)+(int)((r-1)/400);
if (m>2 && r%4 == 0 && r%100 != 0 || r%400 == 0)
dni=dni+1;
return dni;
}
Моя следующая задача — написать функцию, которая считает дни с момента моего рождения до текущей даты, я не уверен, как следует вводить данные, поэтому сейчас я предполагаю, что это просто написано в int main(), поэтому мне нужно изменить только iledni функция, но у меня есть некоторые проблемы с ней, а точнее неправильный результат и я не знаю, как это исправить >‹
#include <stdio.h>
int main()
{
int d=17, m=8, r=2013;
int du=25, mu=11, ru=1994;
printf("%d", iledni(d, m, r, du, mu, ru));
return 0;
}
int iledni(int d, int m, int r, int du, int mu, int ru)
{
int dni,x;
int msc[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int mscdodni[12]={31,28,31,30,31,30,31,31,30,31,30,31};
dni=(r-ru)*365+msc[m-1]-msc[mu]+d-1+(mscdodni[mu-1]-du);
for (ru=1994; ru<=r; ru++)
{
if (ru%4 == 0 && ru%100 != 0 || ru%400 == 0)
dni=dni+1;
}
return dni;
}
Скажите, если я должен объяснить какие-либо строки, я тоже новичок, поэтому извините, если что-то, что я написал, не имеет смысла, я мало знаю о C или о программировании в целом.