magic square

0

Mam program który ma wypisywać magiczny kwadrat. Gdzie jest w nim błąd?

#include<iostream>
using namespace std;

int main()
{
	const int SIZE = 5;
	int tab[SIZE][SIZE] = {};

	
	int w = 0, k = SIZE / 2;
	tab[w][k] = 1;

	
	for (int n = 2; n < SIZE*SIZE; n += 1)
	{
		
		w -= 1; k += 1;
		
		if (w <= 0)
			w += SIZE;
		if (k >= SIZE)
			k -= SIZE;
		
		if (tab[w][k] != 0)
		{
			//Przesuń współrzędne i sprawdź granice:
			w += 1;
			if (w >= SIZE)
				w -= SIZE;
		}
		
		tab[w][k] = n;
	}

	
	for (int x = 0; x < SIZE; x += 1)
	{
		for (int y = 0; y < SIZE; y += 1)
		{
			cout << tab[x][y] << "\t";
		}
		cout << endl;
	}

}
0
w -= 1;

if (w <= 0)
    w += SIZE;
...
    tab[w][k] = n;

Gdy w osiągnie wartość zero, natychmiast dodajesz do niego SIZE, więc nigdy nie zapisujesz nic w miejsce tab[0][k].

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