В квадратной матрице определить количество столбцов упорядоченных по убыванию и вывести их номера - C (СИ)
Формулировка задачи:
Решение задачи: «В квадратной матрице определить количество столбцов упорядоченных по убыванию и вывести их номера»
#include <stdio.h>
#define N 5
int main(void){
int i, j, k;
int m[N][N] = {
{1, 9, 8, 5, 7},
{2, 7, 4, 4, 6},
{3, 4, 3, 1, 5},
{4, 1, 2, 7, 2},
{0, 0, 1, 3, 0}
};
k = 0;
for(i = 0; i < N; ++i){
for(j = 1; j < N; ++j){
if(m[j - 1][i] < m[j][i])
break;
}
if(j == N){
printf("column index: %d\n", i);
++k;
}
}
printf("count sorted desc: %d\n", k);
return 0;
}
Объяснение кода листинга программы
Выводимый на экран результат работы программы: column index: 4 count sorted desc: 1 В данном коде определяется количество столбцов квадратной матрицы, которые упорядочены по убыванию. Для этого используется два вложенных цикла. Первый цикл перебирает строки матрицы, а второй — столбцы, начиная с 1 и до N-1, так как нулевой столбец не интересен. Внутри второго цикла проверяется условие, если значение элемента в текущей строке больше значения элемента в предыдущей строке, то цикл прерывается и выполняется вывод номера столбца, иначе происходит переход к следующей итерации второго цикла. Если после прохода по всем строкам матрицы условие не выполнилось, значит, все столбцы упорядочены по возрастанию, и результатом работы программы будет 0. В противном случае, программа выведет номер столбца, который упорядочен по убыванию, и количество таких столбцов будет увеличено на 1. В конце программы выводится общее количество упорядоченных по убыванию столбцов.