Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д