Передача массива в функцию для заполнения - C (СИ)

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

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

Доброго времени вопрос касательно функций. Суть программы в том,что бы из исходного массива сформировать 3 новых по заданному диапазону значений. То есть я должен вызывать функцию 3 раза и с каждым разом должен формироваться новый массив. Как это реализовать? Пока что функция заполняет вспомогательный массив,а в теле программы нужному массиву присваиваются элементы вспомогательного. Но в связи с этим смысл функции пропадает. Часть программы:
int main()
{
    int a[N][M], i, a_mas[Q], c_mas[Q], d_mas[Q],tmp_mas[Q];
    int f,k,n;
    input(a);
    printf("Исходный массив\n");
    output(a);
    printf("\n");
    k=-5;n=5;
    f=find_mas(a,tmp_mas,k,n);
    printf("Massiv A: ");
    for (i = 0; i<f; i++)
   {
    a_mas[i]=tmp_mas[i];
    printf("%4d", a_mas[i] );
   }
      k=10;n=20;
      f=find_mas(a,tmp_mas,k,n);
      printf("\nMassiv C: ");
      for (i = 0; i<f; i++)
       {
        c_mas[i]=tmp_mas[i];
        printf("%4d", c_mas[i] );
       }
Функция:
int find_mas(int a[N][M],int tmp_mas[Q],int k,int n)
{
    int i, j,f=0;
    for (i = 0; i<N; i++)
    {
        for (j = 0; j <M; j++)
        if (a[i][j] >= k && a[i][j] <= n)
        {
            tmp_mas[f]=a[i][j]; f++;
        }
    }
    return f;
}
P.S если будет нужно, предоставлю полный листинг программы

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

textual
Листинг программы
int * CreaArr(int n, int c)
{
     int *r;
     int i;
     r=calloc(n,sizeof(int)); // создаем массив
     if (c==0) 
       {
          for (i=0; i<n; i++) r[i]=2*i-1;  // при с=0 заполняем нечетными
          return r;
       }
     else if (c==1)
       {
          for (i=0; i<n; i++) r[i]=2*i;   // при с=1 заполняем четными
          return r;
       }
      else
          return r;                           // иначе оставляем нули
}

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

В данном коде функция CreaArr() принимает два аргумента: n и c. Значение n указывает на количество элементов, которые необходимо создать в массиве, а значение c определяет тип заполнения массива. Внутри функции происходит следующее:

  1. Выделяется память под массив r с помощью функции calloc(). Размер массива определяется значением n, а тип данных - int.
  2. Затем, в зависимости от значения c, выполняется заполнение массива.
    • Если c равно 0, то в массив r записываются нечетные числа от 1 до n.
    • Если c равно 1, то в массив r записываются четные числа от 2 до n.
    • Если c не равно 0 и не равно 1, то массив r остается пустым.
  3. После заполнения массива, функция возвращает указатель на начало массива r. Таким образом, функция CreaArr() создает массив заданного размера и заполняет его либо нечетными, либо четными числами в зависимости от значения аргумента c.

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


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

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

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