Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <locale.h>
- void matrixInput(float** arr, int m, int n);
- void matrixOutput(float** arr, int m, int n);
- void matrixCopy(float** arr, float** arr1, float* v1, int m, int n);
- void matrixSnake(float** arr, float** arr1, int m, int n);
- void matrixFree(float** arr, int m, int n);
- void matrixSwap(float** arr, float** arr1, int i, int j, int count);
- void transform(float** arr, float* v, int m, int n);
- int main() {
- setlocale(LC_ALL, "rus");
- int n, m;
- printf("Введите n > 0 и m > 0: ");
- scanf("%d%d", &n, &m);
- float* v = new float[n * m];
- float** arr = new float* [m];
- float* v1 = new float[n * m];
- float** arr1 = new float* [m];
- transform(arr, v, m, n);
- transform(arr1, v1, m, n);
- matrixInput(arr, m, n);
- printf("\nВаша изначальная матрица:\n");
- matrixOutput(arr, m, n);
- matrixCopy(arr, arr1, v1, m, n);
- matrixSnake(arr, arr1, m, n);
- printf("Ваша измененная матрица:\n");
- matrixOutput(arr1, m, n);
- matrixFree(arr, m, n);
- matrixFree(arr1, m, n);
- getch();
- return 0;
- }
- void transform(float** arr, float* v, int m, int n)
- {
- for (int i = 0; i < m; i++)
- arr[i] = v + i * n;
- }
- void matrixInput(float** arr, int n, int m)
- {
- printf("Enter your matrix:\n");
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- scanf("%f", &(arr[i][j]));
- }
- void matrixOutput(float** arr, int m, int n)
- {
- for (int i = 0; i < m; i++)
- for (int j = 0; j < n; j++)
- if (j == n - 1)
- printf("%6.2f\n", arr[i][j]);
- else
- printf("%6.2f ", arr[i][j]);
- printf("\n");
- }
- void matrixFree(float** arr, int m, int n)
- {
- delete[] * arr;
- delete[]arr;
- }
- void matrixCopy(float** arr, float** arr1, float* v1, int m, int n)
- {
- matrixFree(arr1, m, n);
- v1 = new float[n * m];
- arr1 = new float* [m];
- transform(arr1, v1, m, n);
- for (int i = 0; i < n * m; i++)
- arr1[0][i] = arr[0][i];
- }
- void matrixSnake(float** arr, float** arr1, int m, int n)
- {
- int i = 0, j = 0, count = 0; int f = 0;
- while (count != n * m)
- {
- arr1[i][j] = *(*arr + count);
- if (f == 0)
- {
- if ((i == 0) && (j != m - 1))
- {
- j++;
- f = 1;
- }
- else if (j == m - 1)
- {
- i++;
- f = 1;
- }
- else
- {
- i--;
- j++;
- }
- }
- else
- {
- if ((j == 0) && (i != n - 1))
- {
- i++;
- f = 0;
- }
- else if (i == n - 1)
- {
- j++;
- f = 0;
- }
- else {
- j--;
- i++;
- }
- }
- count++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement