//  Returnerer antall dager mellom
int Timer::forskjellDatoer(int t1, int t2)  {  //  to datoer ('t1' og 't2'):
  int d1, d2, m1, m2, a1, a2, tot1, tot2, i; // Masse ulike hjelpevariable:

  konverter(t1, d1, m1, a1);                 //  Konverterer 't1/t2' over i 
  konverter(t2, d2, m2, a2);                 //   'd1/d2', 'm1/m2' og 'a1/a2':
  tot1 = dagnummer(d1, m1, a1);              //  Finner deres dagnummer i 
  tot2 = dagnummer(d2, m2, a2);              //   hvert sitt �r ('a1/a2').
  for (i = 1900;  i < a1;  i++)              //  Finner TOTALT antall dager
	  tot1 += (skuddaar(i)) ? 366 : 365;     //   siden �r 1900 for hvert av
  for (i = 1900;  i < a2;  i++)              //   de to datoene:
	  tot2 += (skuddaar(i)) ? 366 : 365;     
  return ((tot2 > tot1) ? tot2-tot1 : tot1-tot2);  //  Returnerer forskjellen.
}
示例#2
0
                                 // Returnerer datoen ETTER 't', på samme form:
int Timer::nestedato(int t)  {
  int d, m, a;
  
  konverter(t, d, m, a);           //  Konverterer 't' over i 'd', 'm' og 'a'.
  dager_pr_maaned[1] = (skuddaar(a))  ?  29 : 28;   //  Fyller feb. aktuelt år.
  d++;                                              //  dag++
  if (d > dager_pr_maaned[m-1])  {  m++;  d = 1;  } //  Ny måned: mnd++  dag=1
  if (m > 12)                    {  a++;  m = 1;  } //  Nytt år:  aar++  mnd=1
  return (a*10000) + (m*100) + d;  //  Regner ut/omgjør og returnerer.
}
                      //  IDENTISK TIL OPPG_20 (h�sten):
                      //  Ut fra datoens input, s� returneres (om mulig)
                      //    denne datoens dagnummer i �ret, ellers returneres 0.
int Timer::dagnummer(int da, int ma, int aa)  {
                                   //  Setter opp antall dager i m�nedene.
                                   //   Verdien for februar settes senere.
  int totalDagnr, i;

  if (aa < 1600  ||  aa > 2100) return 0;    //  Ulovlig �r.
  if (ma < 1     ||  ma > 12)   return 0;    //  Ulovlig m�ned.
                                   //  Ut fra om �ret er skudd�r eller ei,
                                   //    s� settes verdien for februar:
  dagerPrMaaned[1] = (skuddaar(aa))  ?  29 : 28;
  if (da < 1 ||  da > dagerPrMaaned[ma-1])  return 0;  // Ulovlig dag:
                                   //  Garantert at er en lovlig dato !!
  totalDagnr = da;
  for (i = 0;  i < ma-1;  i++)              // Regner ut datoens dagnummer.
     totalDagnr += dagerPrMaaned[i];

  return totalDagnr;                          // Returnerer dagnummeret.
}