mozda moze i jednostavnije ali ovako sam ja to uradio.
Code:
#include <stdio.h>
#include <math.h>
int prestupnost(int godina) {
if (godina%4==0 && (godina%100!=0 || godina%4==0))
return 1;
else
return 0;
}
int provjera_datuma(int dan, int mjesec, int godina) {
if (mjesec>12 || mjesec <1)
return 0;
if( mjesec==1 || mjesec==3 || mjesec==5 || mjesec==7 || mjesec==8 || mjesec==10 || mjesec==12) {
if (dan>31 || dan <1)
return 0;
}
if (mjesec==2) {
if (prestupnost(godina)==1) {
if (dan>29 || dan<1)
return 0;
}
else {
if (prestupnost(godina)==0)
if (dan >28 || dan<1)
return 0;
}
}
if (mjesec==4 || mjesec==6 || mjesec==9 || mjesec==1) {
if (dan>30 || dan <1)
return 0;
}
return 1;
}
int dani(int mjesec, int godina) {
int ukupno=0,i;
for (i=1; i<mjesec; i++) {
if (i==2) {
if (prestupnost(godina)==1)
ukupno+=29;
else
ukupno+=28;
}
else if (i==1 || i==3 || i==5 || i==7 || i==8 || i==10 || i==12) {
ukupno+=31;
}
else {
ukupno+=30;
}
}
return (ukupno);
}
int period(int dan1, int dan2, int mjesec1, int mjesec2, int godina1, int godina2) {
int i, ukupno=0;
if (godina1>godina2) {
for (i=godina2; i<godina1; i++) {
if (prestupnost(i)==1)
ukupno+=366;
else
ukupno+=365;
}
ukupno=ukupno + dani(mjesec1,godina1) - dani(mjesec2,godina2);
ukupno=ukupno+dan1-dan2;
}
else if (godina1<godina2) {
for (i=godina1; i<godina2; i++) {
if (prestupnost(i)==1)
ukupno+=366;
else
ukupno+=365;
}
ukupno= ukupno + dani(mjesec2, godina2) - dani(mjesec1,godina1);
ukupno= ukupno+dan2-dan1;
}
else if (godina1==godina2) {
if (mjesec1>mjesec2) {
ukupno= ukupno + dani(mjesec1,godina1) - dani(mjesec2,godina2);
ukupno= ukupno +dan1-dan2;
}
else if (mjesec1<mjesec2){
ukupno =ukupno + dani(mjesec2,godina2) - dani(mjesec1,godina1);
ukupno=ukupno + dan2-dan1;
}
else if (mjesec1==mjesec2) {
ukupno=ukupno+ dan1-dan2;
}
}
return fabs(ukupno);
}
int main()
{
int dan_prvi, mjesec_prvi, godina_prva,dan_drugi,mjesec_drugi,godina_druga,funkcija;
do {
printf("\n Unesite prvi datum (d,m,g): ");
scanf("%d,%d,%d", &dan_prvi,&mjesec_prvi,&godina_prva);
funkcija = provjera_datuma(dan_prvi,mjesec_prvi,godina_prva);
if (funkcija==0)
printf("\n Neispravan datum!");
}while (funkcija!=1);
do {
printf("\n Unesite drugi datum (d,m,g): ");
scanf("%d,%d,%d", &dan_drugi,&mjesec_drugi,&godina_druga);
funkcija = provjera_datuma(dan_drugi,mjesec_drugi,godina_druga);
if (funkcija==0)
printf("\n Neispravan datum!");
}while (funkcija!=1);
printf("\n Izmedju datuma je proteklo %d dana. \n",period(dan_prvi, dan_drugi, mjesec_prvi,mjesec_drugi,godina_prva,godina_druga));
return 0;
}