Advertisement
Kwwiker

А вот у меня крутая прога по СиАОДу

Feb 28th, 2021
676
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.29 KB | None | 0 0
  1. void fillMatrixForSpiral(int** matrix, int lines, int columns) {
  2.     int j, loopNum = 0, numToW = 1;
  3.     while (loopNum <= (columns + lines)/4) // num of spiral
  4.     {
  5.         loopNum++;
  6.  
  7.         //top
  8.         for (j = loopNum - 1; j < columns - loopNum + 1; j++)
  9.         {
  10.             matrix[loopNum - 1][j] = numToW++;
  11.             if (numToW > lines * columns) {
  12.                 return;
  13.             }
  14.         }
  15.  
  16.         //right
  17.         for (j = loopNum; j < lines - loopNum + 1; j++)
  18.         {
  19.             matrix[j][columns - loopNum] = numToW++;
  20.             if (numToW > lines * columns) {
  21.                 return;
  22.             }
  23.         }
  24.  
  25.         //left
  26.         for (j = columns - loopNum - 1; j >= loopNum - 1; j--)
  27.         {
  28.             matrix[lines - loopNum][j] = numToW++;
  29.             if (numToW > lines * columns) {
  30.                 return;
  31.             }
  32.         }
  33.  
  34.         //bottom
  35.         for (j = lines - loopNum - 1; j >= loopNum; j--)
  36.         {
  37.             matrix[j][loopNum - 1] = numToW++;
  38.             if (numToW > lines * columns) {
  39.                 return;
  40.             }
  41.         }
  42.     }
  43. }
  44.  
  45. void printMatrix(int** matrix, int lines, int columns) {
  46.     for (int i = 0; i < lines; i++) {
  47.         for (int j = 0; j < columns; j++) {
  48.             cout << matrix[i][j] << "\t";
  49.         }
  50.         cout << endl;
  51.     }
  52. }
  53.  
  54. void printSpiralToArr(int** matrix, int lines, int columns) {
  55.     int j, loopNum = 0, count=0;
  56.     while (loopNum <= (columns + lines)/4) // num of spiral
  57.     {
  58.         loopNum++;
  59.         //top
  60.         for (j = loopNum - 1; j < columns - loopNum + 1; j++)
  61.         {
  62.             cout << matrix[loopNum - 1][j] << " ";
  63.             count++;
  64.             if (count >= lines * columns) {
  65.                 return;
  66.             }
  67.         }
  68.  
  69.         //right
  70.         for (j = loopNum; j < lines - loopNum + 1; j++)
  71.         {
  72.             cout << matrix[j][columns - loopNum] << " ";
  73.             count++;
  74.             if (count >= lines * columns) {
  75.                 return;
  76.             }
  77.         }
  78.        
  79.         //left
  80.         for (j = columns - loopNum - 1; j >= loopNum - 1; j--)
  81.         {
  82.             cout << matrix[lines - loopNum][j] << " ";
  83.             count++;
  84.             if (count >= lines * columns) {
  85.                 return;
  86.             }
  87.         }
  88.        
  89.         //bottom
  90.         for (j = lines - loopNum - 1; j >= loopNum; j--)
  91.         {
  92.             cout << matrix[j][loopNum - 1] << " ";
  93.             count++;
  94.             if (count >= lines * columns) {
  95.                 return;
  96.             }
  97.         }
  98.     }
  99. }
  100.  
  101. int main() {
  102.     SetConsoleCP(1251);
  103.     SetConsoleOutputCP(1251);
  104.     int const lines = 4;
  105.     int const columns = 6;
  106.     int** matrix = new int* [(lines >= columns?lines:columns)];
  107.     for (int i = 0; i < (lines >= columns ? lines : columns); i++) {
  108.         matrix[i] = new int[(lines >= columns ? columns : lines)];
  109.     }
  110.     fillMatrixForSpiral(matrix, lines, columns);
  111.     printMatrix(matrix, lines, columns);
  112.     printSpiralToArr(matrix, lines, columns);
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement