Odwracanie Macierzy/Wyznacznik/Dziwny błąd/C

0
double** complement(double** arr, int size, int rowIndex, int colIndex){
	double** cArr = CreateArr(size);
	for (int i = 0, x = 0; i < size; x++, i++){
		if (x == colIndex) x++;
		for (int j = 0, y = 0; j < size; y++, j++){
			if (y == rowIndex) y++;
			*(*(cArr + i) + j) = *(*(arr + x) + y);
		}
	}
	return cArr;
} 
 double det(double** arr, int size){
	double result = 0;
	if (size == 2){
		return arr[0][0] * arr[1][1] - arr[0][1] * arr[1][0];
	}
	else{
		for (int i = 0; i < size; i++){
			double** cArr = complement(arr, size - 1, 0, i);
			result += arr[0][i] * det(cArr, size - 1);
			freeArr(cArr, size - 1);
		}
	}
	return result;
}

Ogólnie problem jest taki- kiedy wywołam sobie rysowanie arr w ten sposób:

 	if (size == 2){
		printArr(arr, size);
	}

to dostaję:
user image
Mogę też zrobić:

	if (size == 2){
		printf("Tablica recznie: \n%d\t%d\n%d\t%d\n\n", arr[0][0], arr[0][1], arr[1][0], arr[1][1]);
		double a = arr[0][0];
		printf("Liczba recznie: \n%d\t%d\t%d\t%d\n\nTablica z funkcji:\n", a, a, a, a);
		printArr(arr, size);
		printf("====================================================\n");
		re 

Wtedy:
user image

Ktoś ma jakikolwiek pomysł gdzie szukać błędu? Czemu niby nieprawidłowo (choć z wyjątkiem funkcji wypisującej) odwołuje się do tablicy?

0

Język inny, rada ta sama: http://4programmers.net/Forum/1210023

0

Akurat gauss odpada, wykładowca go strasznie nie lubi i nie przyjmie z nim projektu.

user image

Jak to jest możliwe?
Od razu mówię, że prawidłowo tworzy macierz dopełnień i ona jest dobrze wypisywana zawsze... :/.

1

double -> %lf nie %d

0

Dobra, błąd był dużo wcześniej ale powiązany z złym czytaniem - int a double. Więc powiedzmy że miałeś rację więc dodaję łapkę i temat zamknięty ;D.

Tak w ogóle to już po wczytaniu tablicy nie mogłem z niej korzystać, bo czytałem %d a przypisywałem do double.

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