Witam
Piszę program który m.in obsługuje daty. Stworzyłem własną strukturę typu data przechowująca 3 liczby int bez znaku, opisujące datę.
W programie tworzę 2 tablice struktur wymienionego typu. W tych tablicach przechowuję po 12 dat pewnych okresów muszą one być "na sztywno" wpisane do programu. Do pierwszej tablicy odwołuję się przez zmienną typu int w pętli while. Wszystko jest dobrze do pewnego momentu. Kiedy wartość licznika przyjmie zero program odczytuje nie wartość pierwszej tablicy o indeksie zero a wartość drugiej tablicy o indeksie 12. Bardzo proszę o pomoc. Załączam kod źródłowy.
int i;
int j;
struct Data TablicaOkresowOd[12];
struct Data TablicaOkresowDo[12];
TablicaOkresowOd[0].rok=1997;
TablicaOkresowOd[0].miesiac=1;
TablicaOkresowOd[0].dzien=1;
TablicaOkresowOd[1].rok=1998;
TablicaOkresowOd[1].miesiac=4;
TablicaOkresowOd[1].dzien=15;
TablicaOkresowOd[2].rok=1999;
TablicaOkresowOd[2].miesiac=2;
TablicaOkresowOd[2].dzien=1;
TablicaOkresowOd[3].rok=1999;
TablicaOkresowOd[3].miesiac=5;
TablicaOkresowOd[3].dzien=15;
TablicaOkresowOd[4].rok=2000;
TablicaOkresowOd[4].miesiac=11;
TablicaOkresowOd[4].dzien=1;
TablicaOkresowOd[5].rok=2001;
TablicaOkresowOd[5].miesiac=12;
TablicaOkresowOd[5].dzien=15;
TablicaOkresowOd[6].rok=2002;
TablicaOkresowOd[6].miesiac=7;
TablicaOkresowOd[6].dzien=25;
TablicaOkresowOd[7].rok=2003;
TablicaOkresowOd[7].miesiac=2;
TablicaOkresowOd[7].dzien=1;
TablicaOkresowOd[8].rok=2003;
TablicaOkresowOd[8].miesiac=9;
TablicaOkresowOd[8].dzien=25;
TablicaOkresowOd[9].rok=2005;
TablicaOkresowOd[9].miesiac=1;
TablicaOkresowOd[9].dzien=10;
TablicaOkresowOd[10].rok=2005;
TablicaOkresowOd[10].miesiac=10;
TablicaOkresowOd[10].dzien=15;
TablicaOkresowOd[11].rok=2008;
TablicaOkresowOd[11].miesiac=12;
TablicaOkresowOd[11].dzien=15;
TablicaOkresowOd[12].rok=2014;
TablicaOkresowOd[12].miesiac=12;
TablicaOkresowOd[12].dzien=23;
TablicaOkresowDo[0].rok=1998;
TablicaOkresowDo[0].miesiac=4;
TablicaOkresowDo[0].dzien=14;
TablicaOkresowDo[1].rok=1999;
TablicaOkresowDo[1].miesiac=1;
TablicaOkresowDo[1].dzien=31;
TablicaOkresowDo[2].rok=1999;
TablicaOkresowDo[2].miesiac=5;
TablicaOkresowDo[2].dzien=14;
TablicaOkresowDo[3].rok=2000;
TablicaOkresowDo[3].miesiac=10;
TablicaOkresowDo[3].dzien=31;
TablicaOkresowDo[4].rok=2001;
TablicaOkresowDo[4].miesiac=12;
TablicaOkresowDo[4].dzien=14;
TablicaOkresowDo[5].rok=2002;
TablicaOkresowDo[5].miesiac=7;
TablicaOkresowDo[5].dzien=24;
TablicaOkresowDo[6].rok=2003;
TablicaOkresowDo[6].miesiac=1;
TablicaOkresowDo[6].dzien=31;
TablicaOkresowDo[7].rok=2003;
TablicaOkresowDo[7].miesiac=9;
TablicaOkresowDo[7].dzien=24;
TablicaOkresowDo[8].rok=2005;
TablicaOkresowDo[8].miesiac=1;
TablicaOkresowDo[8].dzien=9;
TablicaOkresowDo[9].rok=2005;
TablicaOkresowDo[9].miesiac=10;
TablicaOkresowDo[9].dzien=14;
TablicaOkresowDo[10].rok=2008;
TablicaOkresowDo[10].miesiac=12;
TablicaOkresowDo[10].dzien=14;
TablicaOkresowDo[11].rok=2014;
TablicaOkresowDo[11].miesiac=12;
TablicaOkresowDo[11].dzien=22;
TablicaOkresowDo[12].rok=2015;
TablicaOkresowDo[12].miesiac=4;
TablicaOkresowDo[12].dzien=5;
i=12;
while(CzyDataJestWczesniejsza(TablicaOkresowOd[i],TerminZaplaty)==-1)
--i;
/*funkcja CzyDataJestWczesniejsza sprawdza czy data
podana jako pierwszy argument jest wczesniejsza niż data podana jako drugi argument jeśli nie to zwróć -1*. W tym miejscu występuje błąd programu. Kiedy indeks i wynosi zero TablicaOkresowOd[0] przybiera wartosc TablicaOkresowDo[12]/