Лабораторная работа №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;}
Задания для самостоятельного выполнения:
- Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов среднее арифметическое положительных элементов.
- Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов сумму четных элементов.
- Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов количество отрицательных элементов.
- Даны два одномерных массива из целых чисел каждый. Определить в каком из них больше ненулевых элементов.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать сумму положительных элементов, индекс которых кратен 5.
- Даны два одномерных массива из n целых чисел каждый. Вычислить для каждого из массивов произведение нечетных элементов.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов вывести на экран все отрицательные элементы.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать количество элементов, кратных 3.
- Даны два одномерных массива из целых чисел каждый. Для каждого из массивов подсчитать сумму элементов, индекс которых четный.
- Даны два одномерных массива из целых чисел каждый. Определить, в каком из массивов больше неотрицательных элементов.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать сумму отрицательных элементов, индекс которых нечетный.
- Даны два одномерных массива из n целых чисел каждый. Определить, в каком из массивов больше четных элементов.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов вычислить среднее арифметическое четных элементов.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать произведение элементов, индекс которых кратен 3.
- Даны два одномерных массива из n целых чисел каждый. Для каждого из массивов подсчитать количество элементов равных k.