#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
// протитпы функций
void mas2(int **tf, int nf, int mf, int r_min, int r_max);// функция создает 2-мерный массив
//случайных чисел
void print(int **tf, int nf, int mf);// функция печати массива
void Numb_poz_neg(int **tf1, int nf, int mf, int &poz, int &neg);//
//функция вычисляет число
//положительных (poz)и отрицательных(neg) элементов
// главная программа
int main()
{
setlocale(0,"");
int n = 7;
int m = 4;
int **a = new int *[n]; // указатель на массив указателей на int
for(int i = 0; i < n; i++)
a[i] = new int [m]; // каждому эл-ту массива указателей на строки
// присваивается адрес начала участка памяти,
// выделенного под строку двумерного массива
//и выделяется память под каждый элемент строки массива
int npoz, nneg; // переменные для числа положит. отриц. элементов
mas2(a,n,m,-10,10);
print(a,n,m);
Numb_poz_neg(a,n,m,npoz,nneg);
cout << "число положит. элементов = " << npoz<<endl;
cout << "число отрицат. элементов = " << nneg<< endl;
system("pause");
return 0;
}
// тексты вызываемых функций
// инициализация массива случайными числами
|
|
void mas2(int **tf, int nf, int mf, int r_min, int r_max)// функция создает 2-мерный массив
//случайных чисел
{
srand((unsigned int) time(NULL)); // рандомизация генератора
for(int i=0; i<nf; i++) // цикл по строкам
for(int j=0; j<mf; j++) // цикл по столбцам
tf[i][j]=rand() % (r_max - r_min) + r_min; // инициализация эл-та массива
return; // возврат в место вызова функции
}
// функция вывода массива
void print(int **tf, int nf, int mf)// функция печати массива
{
cout << endl;
for(int i=0; i<nf; i++)
{
for(int j=0; j<mf; j++)
cout << setw(5) << tf[i][j];
cout << endl << endl;
}
return; // возврат обратно в место вызова
}
void Numb_poz_neg(int **tf1, int nf, int mf, int &poz, int &neg)//
//функция вычисляет число
//положительных (poz)и отрицательных(neg) элементов
{
poz = 0; neg = 0;
for(int i=0; i<nf; i++)
for(int j=0; j<mf; j++)
{
if(tf1[i][j]<0) poz += 1;
if(tf1[i][j]>0) neg += 1;
}
return; // возврат обратно в место вызова
}