Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- void vvod(int **arr,int n, int m)
- {
- srand(time(NULL));
- int i,j;
- for (i=0;i<n;i++)
- {
- for (j=0;j<m;j++)
- {
- arr[i][j]=rand()%101-50;
- }
- }
- }//
- void vivod (int **arr, int n, int m)
- {
- int i,j;
- for (i=0;i<n;i++)
- {
- for (j=0;j<m;j++)
- {
- printf("%4d ", arr[i][j]);
- }
- printf("\n");
- }
- }
- void move_column_to_end(int **arr, int n, int m, int columnNumber)
- {
- //Check input args
- if (m <= columnNumber)
- return;
- //Copy column to buffer array
- int *bufArray = malloc(m * sizeof(int));
- for (int i = 0; i < n; i++)
- bufArray[i] = arr[i][columnNumber];
- //Moving columns to reduce empty space
- for (int j = columnNumber + 1; j < m; j ++)
- for (int i = 0; i < n; i++)
- arr[i][j - 1] = arr[i][j];
- for (int i = 0; i < n; i++)
- arr[i][m - 1] = bufArray[i];
- //printf("BUF %i\n", bufArray[i]);
- }
- size_t remove_negative_numbers(int **arr, int n, int m, int numbersAmount)
- {
- int count = 0; //Negative numbers
- int negativeNumbersInIteration = 0;
- for (int j = 0; j < m - count; j++)
- {
- negativeNumbersInIteration = 0;
- //printf()
- for (int i = 0; i < n; i++)
- if (arr[i][j] < 0)
- {
- negativeNumbersInIteration++;
- //printf("Negative number: %i, i: %i, j: %i\n", arr[i][j], i, j);
- }
- if (negativeNumbersInIteration >= numbersAmount)
- {
- //printf("Column: %i, negative numbers: %i\n", j, negativeNumbersInIteration);
- move_column_to_end(arr, n, m, j);
- count++;
- j--;
- }
- //printf("-Column ended-\n");
- }
- return count;
- }
- int main()
- {
- //Array initialization
- int arrVer=7, arrHor=7;
- int **arr = (int **)malloc(arrVer * sizeof(int *));
- for(int i = 0; i < arrVer; i++)
- arr[i] = (int *)malloc(arrHor * sizeof(int));;
- vvod(arr,arrVer,arrHor);
- vivod(arr,arrVer,arrHor);
- printf("=====\n");
- size_t strToRemove = remove_negative_numbers(arr, arrVer, arrHor, 3);
- //move_column_to_end (arr, arrVer,arrHor)
- for (int i = 0; i < arrVer; i++)
- arr[i] = realloc(arr[i], arrHor - strToRemove);
- vivod(arr, arrVer, arrHor - strToRemove);
- //Memory free
- for(int i = 0; i < arrVer; i++)
- free(arr[i]);
- free(arr);//
- }
Advertisement
Add Comment
Please, Sign In to add comment