Переставить в каждом столбце прямоугольной матрицы все отрицательные элементы в конец столбца - 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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы