Передача массива в функцию для заполнения - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д