Untitled
unknown
plain_text
3 years ago
2.3 kB
3
Indexable
void spiralSorrend(const int *matrix, int n, int *&spiral) { int k = 0; // index a spiral tombben int hossz = sqrt(n); // a matrix oldalhossza int index = sqrt(n) - 1; // a kovetkezo elem indexe while(hossz > 0) // a feltetel teljesul amig van meg elem amit nem raktunk be a spiral tombbe { for(int i = 1; i < hossz; i++) { spiral[k] = matrix[index]; k++; index--; // balrol jobbra haladva igy valtozik a kovetkezo elem indexe } for(int i = 1; i < hossz; i++) { spiral[k] = matrix[index]; k++; index += sqrt(n); // fentrol lefele haladva igy valtozik a kovetkezo elem indexe } for(int i = 1; i < hossz; i++) { spiral[k] = matrix[index]; k++; index++; // balrol jobbra haladva igy valtozik a kovetkezo elem indexe } for(int i = 1; i < hossz; i++) { spiral[k] = matrix[index]; k++; index -= sqrt(n); // lentrol felfele haladva igy valtozik a kovetkezo elem indexe } if(hossz == 1) { spiral[k] = matrix[index]; // paratlan n eseten a matrix kozepen levo elemet igy erjuk el, ez egy kulonleges eset } index += sqrt(n) - 1; // megfelelo poziciora lepes egy kor utan hossz -= 2; // egy kor bejarasa utan az oldalhossz 2-vel csokken } } void Kiir_Matrix(int n, const int *matrix) { cout << "A matrix:" << endl; int gyok = sqrt(n); for(int i = 0; i < n; i++) { cout << matrix[i] << " "; if((i + 1) % gyok == 0) { cout << endl; } } cout << endl; } void Kiir_Spiral(int n, int *a) { cout << "A spiral alak:" << endl; for(int i = 0; i < n; i++) { cout << a[i] << " "; } } int main() { int n; Beolvas(n); const int *matrix = new int[n * n]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }; Kiir_Matrix(n, matrix); int *spiral = new int[n]; spiralSorrend(matrix, n, spiral); Kiir_Spiral(n, spiral); delete[] matrix; delete[] spiral; return 0; }
Editor is loading...