Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца - C (СИ)
Формулировка задачи:
Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца. Распечатать часть полученной матрицы, состоящую из n первых строк, не имеющих отрицательных элементов.
Решение задачи: «Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца»
textual
Листинг программы
- #include <stdio.h>
- const int N = 9;
- const int M = 4;
- int main()
- {
- int i, j, k, x, n, flag = 0;
- int a[9][4] = {{-8,-6,-21,0},{-78,2,19,-34},{-61,-27,-3,7},{7,4,-9,-1},{23,345,765,23},
- {34543,765,876,21},{4536,980,0,2},{756,908,234,456},{867,9054,2365,1}};
- puts("Source matrix:");
- for(i = 0; i < N; i++){
- for(j = 0; j < M; j++)
- printf("%9d", a[i][j]);
- printf("\n");
- }
- printf("\n");
- for(j = 0; j < M; j++){
- for(i = 0; i < N; i++){
- if(a[i][j] < 0){
- for(k = N-1; k > i; k--){
- if(a[k][j] >= 0){
- x = a[i][j];
- a[i][j] = a[k][j];
- a[k][j] = x;
- }
- }
- }
- }
- }
- puts("Matrix after sort:");
- for(i = 0; i < N; i++){
- for(j = 0; j < M; j++)
- printf("%9d", a[i][j]);
- printf("\n");
- }
- printf("\n");
- for(i = 0; i < N; i++){
- for(j = 0; j < M; j++){
- if(a[i][j] < 0)
- flag = 1;
- }
- if(flag == 1)break;
- }
- n = i;
- puts("Matrix only positive rows:");
- for(i = 0; i < n; i++){
- for(j = 0; j < M; j++)
- printf("%9d", a[i][j]);
- printf("\n");
- }
- return 0;
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д