Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <locale.h>
- void transform(float** v, float* arr, int n, int m);
- void enterMat(float** arr, int n, int m);
- void printMat(float** arr, int n, int m);
- void sortMat(float** arr, int n, int m);
- void postItems(float** arr, float** a, int n, int m);
- void swap(float* a, float* b);
- void clearMat(float** arr);
- int main()
- {
- setlocale(LC_ALL, "rus");
- int n, m;
- printf("Введите количество строк и столбцов\n");
- do {
- scanf("%d %d", &n, &m);
- if (n < 0 || m < 0)
- printf("Некорректные данные, введите заново\n");
- } while (n < 0 || m < 0);
- float* arr = new float[n * m];
- float** v = new float* [n];
- transform(v, arr, n, m);
- float* dest = new float[n * m];
- float** a = new float* [n];
- transform(a, dest, n, m);
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- a[i][j] = 0;
- printf("Введите элементы\n");
- enterMat(v, n, m);
- printf("\n");
- printMat(v, n, m);
- printf("\n");
- sortMat(v, n, m);
- postItems(v, a, n, m);
- printMat(a, n, m);
- clearMat(v);
- getch();
- }
- void transform(float** v, float* arr, int n, int m)
- {
- for (int i = 0; i < n; i++)
- v[i] = arr + i * m;
- }
- void enterMat(float** arr, int n, int m)
- {
- for (int i = 0; i < n; i++)
- for (int j = 0; j < m; j++)
- scanf("%f", arr[i] + j);
- }
- void printMat(float** arr, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- printf("%9.2f", *(arr[i] + j));
- printf("\n");
- }
- }
- void sortMat(float** arr, int n, int m)
- {
- for (int i = 0; i < m * n - 1; i++)
- for (int j = i + 1; j < m * n; j++)
- {
- if (*(*(arr)+i) > * (*(arr)+j))
- swap((*(arr)+i), (*(arr)+j));
- }
- }
- void postItems(float** arr, float** a, int n, int m)
- {
- int count = 0; int i = 0; int j = 0;
- int f = 0;//1 - по диагонали сверху вниз, 0 - по диагонали снизу вверх
- while (count != n * m)
- {
- a[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++;
- }
- }
- void swap(float* a, float* b)
- {
- float temp = *a;
- *a = *b;
- *b = temp;
- }
- void clearMat(float** arr)
- {
- delete[] * arr;
- delete[]arr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement