Untitled
unknown
plain_text
4 years ago
2.3 kB
7
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...