Advertisement
Guest User

Snake

a guest
Oct 23rd, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <locale.h>
  4.  
  5.  
  6. void matrixInput(float** arr, int m, int n);
  7. void matrixOutput(float** arr, int m, int n);
  8. void matrixCopy(float** arr, float** arr1, float* v1, int m, int n);
  9. void matrixSnake(float** arr, float** arr1, int m, int n);
  10. void matrixFree(float** arr, int m, int n);
  11. void matrixSwap(float** arr, float** arr1, int i, int j, int count);
  12. void transform(float** arr, float* v, int m, int n);
  13.  
  14. int main() {
  15.     setlocale(LC_ALL, "rus");
  16.     int n, m;
  17.     printf("Введите n > 0 и m > 0: ");
  18.  
  19.  
  20.     scanf("%d%d", &n, &m);
  21.  
  22.     float* v = new float[n * m];
  23.     float** arr = new float* [m];
  24.     float* v1 = new float[n * m];
  25.     float** arr1 = new float* [m];
  26.     transform(arr, v, m, n);
  27.     transform(arr1, v1, m, n);
  28.  
  29.     matrixInput(arr, m, n);
  30.     printf("\nВаша изначальная матрица:\n");
  31.     matrixOutput(arr, m, n);
  32.  
  33.     matrixCopy(arr, arr1, v1, m, n);
  34.     matrixSnake(arr, arr1, m, n);
  35.     printf("Ваша измененная матрица:\n");
  36.     matrixOutput(arr1, m, n);
  37.  
  38.  
  39.     matrixFree(arr, m, n);
  40.     matrixFree(arr1, m, n);
  41.     getch();
  42.     return 0;
  43. }
  44.  
  45. void transform(float** arr, float* v, int m, int n)
  46. {
  47.     for (int i = 0; i < m; i++)
  48.         arr[i] = v + i * n;
  49. }
  50.  
  51. void matrixInput(float** arr, int n, int m)
  52. {
  53.     printf("Enter your matrix:\n");
  54.     for (int i = 0; i < n; i++)
  55.         for (int j = 0; j < m; j++)
  56.             scanf("%f", &(arr[i][j]));
  57. }
  58.  
  59. void matrixOutput(float** arr, int m, int n)
  60. {
  61.     for (int i = 0; i < m; i++)
  62.         for (int j = 0; j < n; j++)
  63.             if (j == n - 1)
  64.                 printf("%6.2f\n", arr[i][j]);
  65.             else
  66.                 printf("%6.2f ", arr[i][j]);
  67.     printf("\n");
  68. }
  69.  
  70. void matrixFree(float** arr, int m, int n)
  71. {
  72.     delete[] * arr;
  73.     delete[]arr;
  74. }
  75.  
  76. void matrixCopy(float** arr, float** arr1, float* v1, int m, int n)
  77. {
  78.     matrixFree(arr1, m, n);
  79.     v1 = new float[n * m];
  80.     arr1 = new float* [m];
  81.     transform(arr1, v1, m, n);
  82.     for (int i = 0; i < n * m; i++)
  83.         arr1[0][i] = arr[0][i];
  84. }
  85.  
  86. void matrixSnake(float** arr, float** arr1, int m, int n)
  87. {
  88.     int i = 0, j = 0, count = 0; int f = 0;
  89.     while (count != n * m)
  90.     {
  91.         arr1[i][j] = *(*arr + count);
  92.         if (f == 0)
  93.         {
  94.             if ((i == 0) && (j != m - 1))
  95.             {
  96.                 j++;
  97.                 f = 1;
  98.             }
  99.             else if (j == m - 1)
  100.             {
  101.                 i++;
  102.                 f = 1;
  103.             }
  104.             else
  105.             {
  106.                 i--;
  107.                 j++;
  108.             }
  109.         }
  110.         else
  111.         {
  112.             if ((j == 0) && (i != n - 1))
  113.             {
  114.                 i++;
  115.                 f = 0;
  116.             }
  117.             else if (i == n - 1)
  118.             {
  119.                 j++;
  120.                 f = 0;
  121.             }
  122.             else {
  123.                 j--;
  124.                 i++;
  125.             }
  126.         }
  127.         count++;
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement