Лабораторная работа №17

 Передача одномерных массивов в функцию

Решение нулевого варианта

Задача. Даны два массива из  целых чисел каждый. Определить, в каком из них больше положительных элементов.

Для решения этой задачи потребуется подсчитать количество положительных элементов в двух массивах, то есть выполнить для обоих массивов одни и те же действия. Очевидно, эти действия надо поместить в функцию.

Интерфейс функции: входные данные — массив и количество его элементов, результат — количество положительных элементов в массиве.

Заголовок функции будет иметь следующий вид: int n_posit(const int *a, const int n);

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

Входные данные: N — количество элементов в массиве.

Выходные данные: массив, состоящий из N элементов.

При объявлении статического массива, его размером должна являться числовая константа, а не переменная. В этой задаче целесообразно создать динамический массив. Вначале мы получаем от пользователя размерность массива: cin>>n; Далее выделяем память для массива int *a=new int[n];

Объявляем переменную j,значение которой увеличивается каждый раз на 2. 

Текст программы:

#include "stdafx.h"

#include <iostream>

#include <clocale>

int n_posit(const int *a, const int n);

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{setlocale(LC_ALL, "Russian");

int i,n;

cout<<"Введите количество элементов:";

cin>>n;

int *a=new int[n];

int *b=new int [n];

cout<<"\nВведите элементы первого массива:";

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

cin>>a[i];

cout<<"\nВведите элементы второго массива:";

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

cin>>b[i];

if (n_posit(a,n)>n_posit(b,n)) cout<<"\nВ первом положительных больше";

else if (n_posit(a,n)<n_posit(b,n)) cout<<"\nВо втором положительных больше";

else cout<<"\nОдинаковое количество";

system("pause");

       return 0;}

int n_posit(const int *a, const int n)

{int count=0;

for (int i=0; i<n;i++) if (a[i]>0) count++;

return count;}

Задания для самостоятельного выполнения:

  1. Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов среднее арифметическое положительных элементов.
  2. Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов сумму четных элементов.
  3. Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов количество отрицательных элементов.
  4. Даны два одномерных массива из  целых чисел каждый. Определить в каком из них больше ненулевых элементов.
  5. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать сумму положительных элементов, индекс которых кратен 5.
  6. Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов произведение нечетных элементов.
  7. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов вывести на экран все отрицательные элементы.
  8. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать количество элементов, кратных 3.
  9. Даны два одномерных массива из  целых чисел каждый. Для каждого из массивов подсчитать сумму элементов, индекс которых четный.
  10. Даны два одномерных массива из  целых чисел каждый. Определить, в каком из массивов больше неотрицательных элементов.
  11. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать сумму отрицательных элементов, индекс которых нечетный.
  12. Даны два одномерных массива из n целых чисел каждый. Определить, в каком из массивов больше четных элементов.
  13. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов вычислить среднее арифметическое четных элементов.
  14. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать произведение элементов, индекс которых кратен 3.
  15. Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать количество элементов равных k.

Вернуться к теории