Получить квадратную матрицу по правилу - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, есть задача: Дана матрица C(n,n).Получить B(n), где B(i) - это значение перовго по порядку положительного элемента i-ой строки(если таких элементов нет, то принять B(i)=1 ). И вот такой код:
#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;
}
Но на строке int inmatrix[N][N] выдает ошибку e2313 Constant expression required. Подскажите пожалуйста в чем ошибка.

Решение задачи: «Получить квадратную матрицу по правилу»

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);

Объяснение кода листинга программы

В этом коде:

  1. Объявляются две переменные: i и y, которые будут использоваться в качестве индексов для матрицы.
  2. Объявляется переменная matrix типа int **, которая будет использоваться как указатель на указатель на int. Это позволяет создать двумерный массив.
  3. Программа запрашивает у пользователя два числа: N и M, которые будут использоваться как размеры матрицы.
  4. Выделяется память под массив указателей на int, который будет использоваться для хранения строк матрицы.
  5. Для каждой строки матрицы выделяется память и заполняется случайными числами от -4 до 6.
  6. После выполнения всех операций с матрицей, память освобождается. Список переменных и их значений:
  7. N - размер матрицы по одной из осей (должно быть введено пользователем)
  8. M - размер матрицы по другой оси (должно быть введено пользователем)
  9. matrix - указатель на указатель на int, который будет использоваться для хранения матрицы
  10. i, y - переменные для использования в качестве индексов
  11. **matrix - указатель на массив указателей на int, который будет использоваться для доступа к каждой строке матрицы
  12. *matrix[i] - указатель на массив int, который будет использоваться для доступа к каждой строке матрицы
  13. matrix[i][y] - значение int, которое будет использоваться для доступа к конкретному элементу матрицы
  14. rand()%10-4 - значение int, которое будет использоваться для заполнения матрицы случайными числами
  15. free(matrix[i]); - функция, которая будет использоваться для освобождения памяти после выполнения всех операций с матрицей
  16. free(matrix); - функция, которая будет использоваться для освобождения памяти после выполнения всех операций с матрицей

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


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

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

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