Se umple o serie de spirale (pornind de la centru, în sensul acelor de ceasornic) - preaplin stivă în limba rusă

Lăsând la o parte gândurile mele și se aplică numai codul, codul este prezent acolo este scris în așa fel încât să permită cu ușurință să completați într-o matrice de spirala, indiferent de numărul de elemente (par sau impar), ușor de citit și ușor de modificat.

Acest cod umple o matrice de la 1 la exterior „cercul“ al șirului. Aceasta este valoarea care este umplut cu o serie de elemente crește de la 1 la N * N.

Din acest cod pentru a obține spirala este foarte simplu!

Este suficient să se schimbe de la o valoare inițială initializare N * N la 1, și umplerea elementelor de matrice, de asemenea, începând cu „cercul exterior“ matrice.

Dacă în exemplul de umplutura vine de la punctul cu coordonatele [0] [0] în direcția corectă, atunci nevoia de a lua în spirală pentru a trece de la un punct cu coordonatele [0] [N-1] în direcția stângă.

Numai că în loc de o matrice am folosit în vectorul program demonstrativ, deoarece C ++ nu suportă matrice de lungime variabilă, pe care le utilizați în programul dumneavoastră.

Iată cum ar putea arăta programul ca

Producția sa la consola, după cum urmează:

În ceea ce privește codul, în plus față de faptul că nu ar trebui să fie utilizat cu matrici de dimensiuni variabile, deoarece acestea nu sunt compatibile cu standardul C ++, am vedea în al doilea caz eroarea. După cum am înțeles, în acest caz, indicele x trebuie să fie crescută, mai degrabă decât a scăzut ca următorul element de ieșire ar trebui să fie plasat în linia de sub linia originală. În plus, în abordarea dumneavoastră, puteți obține confuz atunci când se ocupă nu numai cu un număr impar de elemente din matrice, dar cu un număr par de elemente din matrice.