Blad wielkosci wektorów w C# .

0

TO jest częśc kodu. W c normalnie działa a tutaj wyskakuje błąd - " indeks wykracza poza wielkość tabeli".

int[] size = new int[1024];
jj = 1;
cycle[0,0] = 0;
size[0] = 1;
cycle[1,0] = 1;
size[1] = 1;

test = 0;
bool test1 = Convert.ToBoolean(test);
do {
	
	ii = 0;
    
	do {
		ii++;
		cycle[jj,ii] = ((cycle[jj,(ii - 1)])*2) % n;
		size[jj]++;
		aux = ((cycle[jj,ii])*2 ) % n;
	} while (aux != cycle[jj,0]);
	
	ll = 0;
    
	do {
		ll++;
		test = 0;
        for (ii = 1; ((ii <= jj) && (!test1)); ii++)	
		/* Examine previous cycle sets */
		  for (kaux = 0; ((kaux < size[ii]) && (!test1)); kaux++)
		     if (ll == cycle[ii,kaux])
		        test = 1;
	} while ((test1) && (ll < (n - 1)));
  
    if (!(test1)) {
        
		jj++;	
		cycle[jj,0] = ll;
       	size[jj] = 1; -  //////////////////*  w tym miejsu jest błąd *///////////////////////////// 
	}
} while (ll < (n - 1));
nocycles = jj;		

Z góry dziękuję za jakieś podpowiedzi bo juz nie wiem co mam zrobic.

0
Poczatki z C# napisał(a)

W c normalnie działa a tutaj wyskakuje błąd - " indeks wykracza poza wielkość tabeli".

Bo C jest "głupie" (a raczej trzeba być mądrym, żeby w nim pisać to, co chce się naprawdę napisać) i pozwala na takie błędy. Działa normalnie, ale nie dobrze - bo chyba nie chcesz, wykraczać poza rozmiar tablicy, nie?
Komunikat błędu mówi wszystko o nim, ale dlaczego do tego dochodzi, to nie wiem. Wrzuć lepiej tyle kodu, aby dało się skompilować i pozwolić na sprawdzenie co jest nie tak. Jaką wartość ma jj w momencie nastąpienia błędu?

0

podaj cala procedure i dane wejsciowe

czy przy takich danych we. konkretnie cycle[1, 0] = 1; i n parzystym nigdy nie wyjdziesz z pierwszej petli do-while (aux != cycle[jj, 0]) ?? :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1