Передача массива в функцию для заполнения - C (СИ)
Формулировка задачи:
Доброго времени вопрос касательно функций. Суть программы в том,что бы из исходного массива сформировать 3 новых по заданному диапазону значений. То есть я должен вызывать функцию 3 раза и с каждым разом должен формироваться новый массив. Как это реализовать? Пока что функция заполняет вспомогательный массив,а в теле программы нужному массиву присваиваются элементы вспомогательного. Но в связи с этим смысл функции пропадает.
Часть программы:
Функция:
P.S если будет нужно, предоставлю полный листинг программы
Листинг программы
- 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;
- }
Решение задачи: «Передача массива в функцию для заполнения»
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 определяет тип заполнения массива. Внутри функции происходит следующее:
- Выделяется память под массив r с помощью функции calloc(). Размер массива определяется значением n, а тип данных - int.
- Затем, в зависимости от значения c, выполняется заполнение массива.
- Если c равно 0, то в массив r записываются нечетные числа от 1 до n.
- Если c равно 1, то в массив r записываются четные числа от 2 до n.
- Если c не равно 0 и не равно 1, то массив r остается пустым.
- После заполнения массива, функция возвращает указатель на начало массива r. Таким образом, функция CreaArr() создает массив заданного размера и заполняет его либо нечетными, либо четными числами в зависимости от значения аргумента c.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д