Параметр к программе - C (СИ)

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

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

Здравствуйте! Изучая двумерные массивы, наткнулся на такую задачу: " На вход программе подается двумерный массив n*n, где n<100 и подается как параметр к программе ... ". Отсюда возник вопрос, что это за "параметр к программе"? Как я понял, это аргумент для функции main. То есть это должно выглядеть примерно так:
void main(int argc, char * argv[], int * mas[])
{
    int n, i, j;
    printf("Input n = ");
    scanf("%d", &n);
    mas = malloc(n*sizeof(int));
    
    for(i=0; i<n; i++)
    {
        *(mas+i)=(int*)malloc(n*sizeof(int));
    }
Или я ошибаюсь? Объясните, пожалуйста.

Решение задачи: «Параметр к программе»

textual
Листинг программы
void main(int argc, char * argv[])
{
    int n, i, j;
    printf("Input n = ");
    scanf("%d", &n);
    argv = realloc(argv, (n+1)*sizeof(char*));
    
    for(i=1; i<=n; i++)
    {
        *(argv+i)=(char*)malloc(n*sizeof(int));
    }

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

В данном коде:

  1. Объявлены три переменные: n, i, j типа int и одна переменная argv типа char*.
  2. Выводится сообщение Input n = и считывается значение переменной n с помощью функции scanf.
  3. Аргумент argv изменяется с помощью функции realloc, чтобы выделить память под массив строк (char*) размером n+1.
  4. В цикле for создаются n строк (char*) с помощью функции malloc и записываются в argv. Код выполняет следующие действия:
    • Считывает значение переменной n.
    • Изменяет размер массива argv с помощью функции realloc.
    • Создает n строк (char*) с помощью функции malloc и записывает их в argv. Но, следует отметить, что данный код имеет некоторые проблемы:
    • Не освобождается память, выделенная под строки с помощью функции malloc, если они не будут использованы.
    • Не проверяется, достаточно ли памяти выделено под массив argv и достаточно ли памяти для создания новых строк (char*).

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


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

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

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