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

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

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

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

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

textual
Листинг программы
  1. int * CreaArr(int n, int c)
  2. {
  3.      int *r;
  4.      int i;
  5.      r=calloc(n,sizeof(int)); // создаем массив
  6.      if (c==0)
  7.        {
  8.           for (i=0; i<n; i++) r[i]=2*i-1;  // при с=0 заполняем нечетными
  9.           return r;
  10.        }
  11.      else if (c==1)
  12.        {
  13.           for (i=0; i<n; i++) r[i]=2*i;   // при с=1 заполняем четными
  14.           return r;
  15.        }
  16.       else
  17.           return r;                           // иначе оставляем нули
  18. }

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

В данном коде функция 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы