Lekko zmodyfikowalem to co napisales i otrzymalem cos takiego:
Wezmy przykladowy input:
a n = 1
b c n = 2
d e f n = 3
g h i j n = 4
k l m n = 5
n o n = 6
p n = 7
Macierz wynikowa poprawna:
g d b a
k h e c
n l i f
p o m j
Do badania stanu tabliczy tworze dwie zmienne pomocnicze:
int za_polowa = 0;
bool czy_polowa = false;
Wykonuje kolejno kroki:
- n = 1 czy_polowa = false; za_polowa = 0;
x = SZEROKOSC - n + za_polowa; y = za_polowa; znak = "a";
- n = 2 czy_polowa = false; za_polowa = 0;
x = SZEROKOSC - n + za_polowa; y = za_polowa; znak = "b"; ( mamy teraz k - krokow, gdzie k = n dokladnie 2, a wiec )
x++; y++; znak = "c";
...
- n = 4 czy_polowa = false; za_polowa = 0; ( wiem ze jestem w polowie poniewaz n == SZEROKOSC, jednak zmienna czy_polowa zmienie na true dopiero po tym rzedzie )
dalej analogicznie jak w 1 i 2 gdzie na koncu:
czy polowa = true;
- n = 5 czy_polowa = true; za_polowa++; ( zmienna za polową bedzie teraz zwiekszana o 1 przy kazdym rzedzie );
x = SZEROKOSC - n + za_polowa; y = za_polowa; znak = "k"; ( mamy teraz k - krokow, gdzie k = --n -1 dokladnie 3, a wiec )
x++; y++; znak = "l";
x++; y++; znak = "m";
...
Wynik wedlug powyzszych krokow:
g d b a
k h e c
n l i f
p o m j
Jak widac zgadzaja sie, jakbym gdzies popelnil blad prosze o poprawe, dzieki za pomoc :).