Массивы в качестве параметров функции     

Два способа использования одномерных массивов в качестве параметров функции.

I способ. Синтаксис:

тип_функции имя_функции ( тип_массива имя_массива [ n ] )
{ тело функции}

n – количество элементов в массиве

Вызов функции:  имя_функции (имя_массива);

Используется для массивов одинаковой длины.

Пример: Написать функцию нахождения минимума в одномерном массиве.

int mini (int a[n])

    { int min = 999;

    for(int i = 0; i < n; i ++)

    if (a[i] < min) min = a[i];

    return min;

    }

Вызов функции в главном модуле:

main()

{ int mas[m], tmin;

   …………………

   tmin = mini (mas);

   …………………

 }

II способ. Синтаксис:

тип_функции имя_функции ( тип_массива имя_массива [ ], int n )
{ тело функции}

n – количество элементов в массиве

Вызов функции:  имя_функции (имя_массива, кол-во элементов мас-ва);

В определении функции используется два формальных параметра, значит и при вызове тоже используется два фактических параметра (имя массива и количество элементов). Второй способ используется, когда функция с таким описанием формальных параметров, используется для массивов разной длины.

Пример массива, в качестве параметра функции (Решение задачи можно посмотреть, скачав файл "Задача-11"):

Напишите функцию, которая подсчитывает среднее арифметическое элементов массива, кратных 3. В программе объявите 2 массива разной длины.

#include <iostream.h>
#include<conio.h>
# define n 5
# define m 7
float sredn (int a[],int t)
 { float sr,sum=0;
   int  kol=0;
   for(int i=0;i<t;i++)
      if (a[i]%3==0)
    {sum=sum+a[i];
     kol=kol+1;
    }
    sr=sum/kol;
    return sr;
  }
void main()
{ int b[n], c[m], i;
  float sr1, sr2;
  cout<<"vvedite "<<n<<" elementov 1-go massiva\n";
  for (i=0;i<n;i++)
    cin>>b[i];

  cout<<"vvedite "<<m<<" elementov 2-go massiva"<<endl;
  for (i=0;i<m;i++)
     cin>>c[i];

  sr1 = sredn (b, n);
  sr2 = sredn (c, m);
  cout<<"srednee znachenie 1-go massiva: "<<sr1<<endl;
  cout<<"srednee znachenie 2-go massiva: "<<sr2;
  getch();
}

Среда, 08.05.2024, 11:39
Приветствую Вас Гость