Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <malloc.h>
- #include <time.h>
- void fillArray(int** arr, int n, int m);
- void showArray(int** arr, int n, int m);
- void removeColumns(int** arr, int n, int m);
- int main()
- {
- setlocale(0, "rus");
- //srand(time(NULL));
- int i = 0, j = 0; //счётчики для циклов.
- int n = 5, m = 7, o = 7, p = 7; // n и m для матрицы А, o и p для матрицы B.
- int** A = (int**)malloc(n * sizeof(int*));
- if (A == NULL) exit(1);
- if (A)
- {
- for (i = 0; i < n; ++i)
- A[i] = (int*)malloc(m * sizeof(int)); //выделение памяти под матрицу А из n строк и m столбцов.
- }
- int** B = (int**)malloc(o * sizeof(int*));
- if (B == NULL) exit(1);
- if (B)
- {
- for (i = 0; i < o; ++i)
- B[i] = (int*)malloc(p * sizeof(int)); //выделение памяти под матрицу B из o строк и p столбцов.
- }
- printf("Массив А до изменений:\n");
- fillArray(A, n, m);
- showArray(A, n, m);
- printf("\n");
- printf("Массив B до изменений:\n");
- fillArray(B, o, p);
- showArray(B, o, p);
- printf("Массив А после изменений:\n");
- removeColumns(A, n, m);
- showArray(A, n, m);
- printf("Массив B после изменений:\n");
- }
- void fillArray(int** arr, int n, int m) //заполнение матрицы "рандомными" числами.
- {
- //srand(time(NULL));
- for (int i = 0; i < n; ++i)
- for (int j = 0; j < m; ++j)
- {
- arr[i][j] = 5 - rand() % 10;
- }
- }
- void showArray(int** arr, int n, int m) //вывод матрицы на экран.
- {
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < m; ++j)
- {
- printf("%i\t", arr[i][j]);
- }
- printf("\n");
- }
- }
- void removeColumns(int** arr, int n, int m)
- {
- int count = 0, k = 0; //count — счётчик отрицательных элементов в столбце, k — переменная для цикла while.
- for (int l = 0; l < m; ++l)
- {
- for (int i = 0; i < n; ++i) //пробегаемся по каждому столбцу.
- {
- printf("%i", arr[i][l]);
- system("pause");
- if (arr[i][l] < 0)
- {
- ++count; //если элемент в столбце отрицательный, инкримируем счётчик.
- printf("count = %i", count);
- system("pause");
- if (count >= 2) //если число отрицательных элементов в столбце равно двум, удаляем столбец с переносом значений из следующего.
- {
- --m; //убавляем кол-во столбцов.
- while (k < n)
- {
- arr[k][l] = arr[k][l + 1]; //оставаясь в столбце l меняем значения в строках от 0 до m.
- ++k;
- }
- arr[l] = (int*)realloc(*&arr[l], sizeof(int) * m); //меняем кол-во памяти под столбцы.
- count = 0;
- }
- }
- }
- count = 0; //обнуляем счётчик после прохода по столбцу.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement