Получить квадратную матрицу по правилу - C (СИ)
Формулировка задачи:
Здравствуйте, есть задача: Дана матрица C(n,n).Получить B(n), где B(i) - это значение перовго по порядку положительного элемента i-ой строки(если таких элементов нет, то принять B(i)=1 ).
И вот такой код:
Но на строке int inmatrix[N][N] выдает ошибку e2313 Constant expression required. Подскажите пожалуйста в чем ошибка.
#include <stdio.h> int main(void){ int i = 0; int j = 0; int N = 10; int inmatrix[N][N]; int b[N]; char flag = 0; printf("Введите размер квадратной матрицы: ") scanf("%d", &N); printf("Введите элементы матрицы: ") for (; i<N; i++){ b[i] = flag = 1; for (; j<N; j++){ scanf("%d", &inmatrix[i][j]); if (inmatrix[i][j] && flag){ b[i] = j; flag = 0; } else continue; } } for (i = 0; i<N; j++) printf(%d, b[i]); return 0; }
Решение задачи: «Получить квадратную матрицу по правилу»
textual
Листинг программы
int i,y; int **matrix; //это указатель на указатель на int printf("Введите размер N: "); scanf("%d", &N); printf("Введите размер M: "); scanf("%d", &M); //выделяем память под массив указателей matrix = (int **)calloc(N, sizeof(*matrix)); //matrix теперь указывает на массив указателей на int //выделяем память для каждой строки матрици for(i = 0; i < N; ++i) { matrix[i] = (int*)calloc(M, sizeof(*matrix[i]) ); for(y=0; y<M; y++) matrix[i][y] = rand()%10-4; // и заполняем строку случайными числами } // // ... работаем с матрицей // //после завершения работы, необходимо освободить всю выделенную память for(int i = 0; i < N; ++i) free(matrix[i]); free(matrix);
Объяснение кода листинга программы
В этом коде:
- Объявляются две переменные: i и y, которые будут использоваться в качестве индексов для матрицы.
- Объявляется переменная matrix типа int **, которая будет использоваться как указатель на указатель на int. Это позволяет создать двумерный массив.
- Программа запрашивает у пользователя два числа: N и M, которые будут использоваться как размеры матрицы.
- Выделяется память под массив указателей на int, который будет использоваться для хранения строк матрицы.
- Для каждой строки матрицы выделяется память и заполняется случайными числами от -4 до 6.
- После выполнения всех операций с матрицей, память освобождается. Список переменных и их значений:
- N - размер матрицы по одной из осей (должно быть введено пользователем)
- M - размер матрицы по другой оси (должно быть введено пользователем)
- matrix - указатель на указатель на int, который будет использоваться для хранения матрицы
- i, y - переменные для использования в качестве индексов
- **matrix - указатель на массив указателей на int, который будет использоваться для доступа к каждой строке матрицы
- *matrix[i] - указатель на массив int, который будет использоваться для доступа к каждой строке матрицы
- matrix[i][y] - значение int, которое будет использоваться для доступа к конкретному элементу матрицы
- rand()%10-4 - значение int, которое будет использоваться для заполнения матрицы случайными числами
- free(matrix[i]); - функция, которая будет использоваться для освобождения памяти после выполнения всех операций с матрицей
- free(matrix); - функция, которая будет использоваться для освобождения памяти после выполнения всех операций с матрицей
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д