Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void fillMatrixForSpiral(int** matrix, int lines, int columns) {
- int j, loopNum = 0, numToW = 1;
- while (loopNum <= (columns + lines)/4) // num of spiral
- {
- loopNum++;
- //top
- for (j = loopNum - 1; j < columns - loopNum + 1; j++)
- {
- matrix[loopNum - 1][j] = numToW++;
- if (numToW > lines * columns) {
- return;
- }
- }
- //right
- for (j = loopNum; j < lines - loopNum + 1; j++)
- {
- matrix[j][columns - loopNum] = numToW++;
- if (numToW > lines * columns) {
- return;
- }
- }
- //left
- for (j = columns - loopNum - 1; j >= loopNum - 1; j--)
- {
- matrix[lines - loopNum][j] = numToW++;
- if (numToW > lines * columns) {
- return;
- }
- }
- //bottom
- for (j = lines - loopNum - 1; j >= loopNum; j--)
- {
- matrix[j][loopNum - 1] = numToW++;
- if (numToW > lines * columns) {
- return;
- }
- }
- }
- }
- void printMatrix(int** matrix, int lines, int columns) {
- for (int i = 0; i < lines; i++) {
- for (int j = 0; j < columns; j++) {
- cout << matrix[i][j] << "\t";
- }
- cout << endl;
- }
- }
- void printSpiralToArr(int** matrix, int lines, int columns) {
- int j, loopNum = 0, count=0;
- while (loopNum <= (columns + lines)/4) // num of spiral
- {
- loopNum++;
- //top
- for (j = loopNum - 1; j < columns - loopNum + 1; j++)
- {
- cout << matrix[loopNum - 1][j] << " ";
- count++;
- if (count >= lines * columns) {
- return;
- }
- }
- //right
- for (j = loopNum; j < lines - loopNum + 1; j++)
- {
- cout << matrix[j][columns - loopNum] << " ";
- count++;
- if (count >= lines * columns) {
- return;
- }
- }
- //left
- for (j = columns - loopNum - 1; j >= loopNum - 1; j--)
- {
- cout << matrix[lines - loopNum][j] << " ";
- count++;
- if (count >= lines * columns) {
- return;
- }
- }
- //bottom
- for (j = lines - loopNum - 1; j >= loopNum; j--)
- {
- cout << matrix[j][loopNum - 1] << " ";
- count++;
- if (count >= lines * columns) {
- return;
- }
- }
- }
- }
- int main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int const lines = 4;
- int const columns = 6;
- int** matrix = new int* [(lines >= columns?lines:columns)];
- for (int i = 0; i < (lines >= columns ? lines : columns); i++) {
- matrix[i] = new int[(lines >= columns ? columns : lines)];
- }
- fillMatrixForSpiral(matrix, lines, columns);
- printMatrix(matrix, lines, columns);
- printSpiralToArr(matrix, lines, columns);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement