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