Допускается передавать в функцию массив. Существует два способа передачи массива в функцию. Первый способ заключается в том, что функция получает адрес первого элемента массива в виде указателя.
Пример: Даны два одномерных массива A[N] и A1[N]. Создать массивы B[K] и B1[K], содержащие кратные 7 отрицательные элементы массивов A[N] и A1[N] соответственно.
#include<iostream.h>
#include <stdlib.h>
//прототип функции пользователя
void kr7(int *a,int N,int *b);
//основная функция
main()
{
const N=10,K=N;
int A[N],A1[N],B[K],B1[K];
int *p=A,*p1=B; //описание указателей
kr7(p,N,p1); //вызов функции для массива А
p=A1;p1=B1;
kr7(p,N,p1);// вызов функции для массива А1
}
//описание функции пользователя
void kr7(int *a,int N,int *b)
{int i,j=0;
randomize();
cout<<"\nИсходный массив"<<endl;
for (i=1;i<=N;i++) //формирование исходного массива
{
*a=70-random(140); //из случайно выбранных чисел
cout.width(7);
cout<<*a; //вывод исходного массива на экран
a++;} // переход на следующий элемент исходного массива
a=a-N; //установка указателя на начало исходного массива
for (i=1;i<=N;i++) //проверка элементов массива на
|
|
{ if((*a)%7==0){ b++; *b=*a; j++;} //кратность 7
a++;} // переход на следующий элемент исходного массива
b=b-j+1; //установка указателя на начало сформированного массива
cout<<"\nПолученный массив: "<<endl;
for(i=1;i<=j;i++) //вывод сформированного массива на экран
{
cout.width(7);
cout<<*b;
b++; // переход на следующий элемент сформированного массива
}
}
Второй способ – в объявлении функции указывается, что ее аргументом является массив неопределенного размера.
Пример: Даны три одномерных массива m3[n], m2[m], m1[k]. Найти для каждого массива в отдельности произведение количества положительных и количества отрицательных элементов каждого массива. Использовать функции kol_otr и kol_pol.
#include<iostream.h>
#include<stdlib.h>
//описание прототипа функции определения количества
//отрицательных элементов массива
int kol_otr(float array[],int n);
//описание прототипа функции определения кол-ва положительных
//элементов массива
int kol_pol(float array[],int n);
//описание функции ввода элементов массива
void vvod(float array[],int n)
{
cout<<"\nИсходный массив из "<<n<<" элементов"<<endl;
for(int i=0;i<n;i++)
{array[i]=50-random(100);
cout.width(4);
cout<<array[i];}
}
void main()
{
const n=6,k=4,m=5;
float m1[k],m2[m],m3[n];
//Работа с первым массивом
vvod(m1,k);
cout<<"kol_otr*kol_pol= "<<kol_otr(m1,k)*kol_pol(m1,k)<<endl;
//Работа со вторым массивом
vvod(m2,m);
cout<<"kol_otr*kol_pol= "<<kol_otr(m2,m)*kol_pol(m2,m)<<endl;
//Работа с третьим массивом
vvod(m3,n);
cout<<"kol_otr*kol_pol= "<<kol_otr(m3,n)* kol_pol(m3,n)<<endl;
}
//описание функции определения количества
//отрицательных элементов массива
int kol_otr(float array[],int n)
{
int kol=0;
for(int i=0;i<n;i++)
if(array[i]<0) kol++;
cout<<"\nkol_otr="<<kol<<endl;
return kol;
}
//описание функции определения кол-ва положительных
//элементов массива
int kol_pol(float array[],int n)
{
int kol=0;
for(int i=0;i<n;i++)
if(array[i]>0) kol++;
cout<<"kol_pol="<<kol<<endl;
return (kol);
}