Zmienna zmienia swoją wartość po wyjściu z pętli.

0

Cześć,
mam problem z funkcją, która za zadanie ma minimalizować każdą wartość w wierszu o wartość minimalnego elementu.

Oto kod:

	void minimumWiersz(int **mapa, int rozmiar, int dolneOszacowanie)
	{
		int minimum = 999999;		// zmienna przechowująca minimum w wierszu

		for (int i = 0; i < rozmiar; i++)
		{
			for (int j = 0; j < rozmiar; j++)
			{
				if (mapa[i][j] < minimum)		// znajdowanie minimum w wierszu
					minimum = mapa[i][j];
			}
			if (minimum =! 0)		// odejmujemy wierszami tylko wtedy, gdy znalezione minimum jest > od 0
			{
				for (int k = 0; k < rozmiar; k++)	// odejmowanie znalezionego minimum od całego wiersza
				{
					mapa[i][k] -= minimum;
				}
			}
			dolneOszacowanie += minimum;
			minimum = 999999;
		}
	}

Pod debuggerem odkryłem, że po wyjściu z pierwszej pętli wartość zmiennej **minimum **jest prawidłowa, zaś po wejściu do pętli kolejnej (ze zmienną iteracyjną k) wartość **minimum **zmienia się na 1. Dzieje się tak dla wszystkich wierszy w tablicy (tzn. za każdym razem odejmowana jest 1).
Przykładowa tablica wartości (po lewej przed, po prawej po przejściu algorytmu).
user image

Z góry dziękuję za wszystkie odpowiedzi.
Pozdrawiam.

2
 if (minimum =! 0)

=! to nie to samo co !=

1

Masz minimum = !0 zamiast minimum != 0.

Robisz negację 0, co daje nam 11111111111111111111111111111111(2) a to jest -1(10) i chyba taką wartość przyjmuje?

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