Witam koledzy od dłuższego czasu męczę się z programem który obliczy różnice dni między 2 podanymi datami (rok,miesiac,dni,godzina,minuta,sekunda)
Dokopałem się by zamienić podane daty na daty Juliańskie a następnie odjąć je od siebie dzięki czemu wychodzą ładnie dni lecz mam problem z sekundami
i w przypadkach gdy dzień nie minął do końca program nie spełnia założeń.

Przy podanych danych wejsciowych

5 
1997 12 31 0 0 0  
1998 1 1 0 0 0  
1997 12 31 23 59 59 
1998 12 31 23 59 59 
1997 12 31 23 59 59 
1998 1 1 23 59 58
 2000 2 20 0 0 0 
 2000 3 20 23 59 59 
 2000 2 29 0 0 0  
2000 3 1 0 0 0  

Powinno wypluć:

1 
365
 0
 29 
1 

Pierwsza zmienna D w tym przypadku 5 oznacza ilość testów.

Przy 3 teście zamiast 0 wypluwa mi 1 i nwm jak sobie poradzić z tym problemem dotyczącym sekund.

Oto kod

#include <iostream>
using namespace std;
int Wprowadz_D()
{
int D=0;
while(D<1 or D>2000)	
{
cin>>D;		
}		
	return D;
}
void dodaj_chwile(int *tab1,int *tab2)
{
	for(int i=0;i<=5;i++)
		cin>>tab1[i];
	  
	  for(int i=0;i<=5;i++)
		cin>>tab2[i];  
	
}
void wypisz(int *tab1,int *tab2)
{
for(int i=0;i<=5;i++)
		cout<<tab1[i]<<" ";
	  
	  cout<<endl;
	  
	  for(int i=0;i<=5;i++)
		cout<<tab2[i]<<" ";  	
}
int Julianskie(int R,int M,int D)
{
	double X,A,Y,V,B,Q,C,W,E,JD;
	X=(M+9)/12;
	A=4716+R+(int)X;
	Y=275*M/9;
	V=7*A/4;
	B=1729279.5+367*R+(int)Y-(int)V+D;
	Q=(A+83)/100;
	C=(int)Q;
	W=3*(C+1)/4;
	E=(int)W;
	JD=B+38-E;
	return JD;
}
int sekundy(int *T1,int *T2)
{
	int t1=T1[3]*3600+T1[4]*60+T1[5];
	int t2=T2[3]*3600+T2[4]*60+T2[5];
	
	
	return t2-t1;
	
}

void wypisz_dane(int  tab[],int D)
{
	for(int i=0;i<D;i++)
	{
		cout<<tab[i]<<endl;
	}
}
main()
{
int T1[5],T2[5];
int D=Wprowadz_D();
int *wsk_T1=T1,*wsk_T2=T2,roznica,dane[D];
int *wsk_dane=dane;	
	for(int i=0;i<D;i++)
	{
	dodaj_chwile(wsk_T1,wsk_T2);
    roznica=Julianskie(T2[0],T2[1],T2[2])-Julianskie(T1[0],T1[1],T1[2]);
	int sek=sekundy(wsk_T1,wsk_T2);
	  wsk_dane[i]=roznica;

}	
wypisz_dane(dane,D);
	
}