#include <stdio.h> #include <stdbool.h> #include <stdlib.h> typedef struct { int* col_nums; int col_count; } matrix_info_t; #define N 3 matrix_info_t* scan_matrix(int* M, int n); int main(int argc, char** argv) { int M[N*N] = { 5,2,3, 4,3,2, 3,4,1 }; matrix_info_t * m_info = scan_matrix(M, N); (void)printf("Номера столбцов:\n"); for(int i = 0; i < m_info->col_count; i++){ (void)printf("%d ", m_info->col_nums[i]); } (void)printf("\nНомера столбцов в квадрате:\n"); for(int i = 0; i < m_info->col_count; i++){ (void)printf("%d ", m_info->col_nums[i]*m_info->col_nums[i]); } (void)printf("\n"); return 0; } matrix_info_t* scan_matrix(int* M, int n){ matrix_info_t * ret = malloc(sizeof(matrix_info_t)); ret->col_count = 0; for(int j = 0; j < n; j++){ bool correct_column = true; for(int i = 1; i < n; i++){ if(M[N*(i - 1) + j] < M[N*i + j]){ correct_column = false; break; } } if(correct_column){ ret->col_nums = realloc(ret->col_nums, sizeof(int) * ret->col_count++); ret->col_nums[ret->col_count - 1] = j; } } return ret; }