Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Статический член класса


Рекомендуемые сообщения

Помогите мне надо чтобы в программе был подсчет сколько раз используется функция void Matr::Show() и количество выводыло не экран. Программа консольная, вот текст:

.h

class Matr{private:int n, m;int**mas;public:Matr();Matr(int num);Matr(Matr &M);~Matr();//void Create(int num);void Copy(Matr M) ;float Summ();void Input();void Set1(int value) ;void Set(int value, int i, int j);void Show();int Element();};

.cpp

Matr::Matr(){	n=2;	m=2;	mas=new int*[n];	for(int i=0; i<n; i++)			mas[i]=new int[m];	for(int j=0; j<m;j++)			for(int i=0; i<n; i++)					mas[i][j]=0;}Matr::Matr(int num){	n=num;	m=num;	mas=new int*[n];	for(int i=0; i<n; i++)	{			mas[i]=new int[m];	}	for(int j=0; j<m;j++)	{			for(int i=0; i<n; i++)					mas[i][j]=0;	}}Matr::Matr(Matr &M){	n=M.n;	m=M.m;	mas=new int*[n];	for(int i=0; i<n; i++)	{			mas[i]=new int[m];	}	for(int j=0; j<m;j++)	for(int i=0; i<n; i++)	mas[i][j]=M.mas[i][j];}Matr::~Matr(){	if(mas)	{			for(int i=0; i<n; i++)			{					delete[]mas[i];			}			delete[]mas;	}} /*void Matr::Create(int num){	if(mas)	{	for(int i=0; i<n; i++)	{	delete[]mas[i];	}			delete[]mas;	}	n=num;	m=num;	mas=new int*[n];	for(int i=0; i<n; i++)			mas[i]=new int[m];	for(int j=0; j<m; j++)	{			for(int i=0; i<n; i++)			mas[i][j]=0;	}} */void Matr::Copy(Matr M){	if(mas)	{	for(int i=0; i<n; i++)	{	delete[]mas[i];	}			delete[]mas;	}	n=M.n;	m=M.m;	mas=new int*[n];	for(int i=0; i<n; i++)	{			mas[i]=new int[m];	}			for(int j=0; j<m;j++)			for(int i=0; i<n; i++)					mas[i][j]=M.mas[i][j];}float Matr::Summ(){	float sum=0.00;	for (int i=0; i<n; i++)	for (int j=0; j<m; j++)	sum+=mas[i][j];	return sum;}void Matr::Input(){	cout<<"Input n: ";	cin>>n;	cout<<"Input m: ";	cin>>m;	mas=new int*[n];	cout<<"Input array:\n";	for(int i=0; i<n; i++)	{			mas[i]=new int[m];			for(int j=0; j<m;j++)			{					cout<<"Input mas["<<i<<"]["<<j<<"]: \n";					cin>>mas[i][j];			}	}}void Matr::Set1(int value){	for(int i=0; i<n; i++)	{			for(int j=0; j<m;j++)			{					mas[i][j]=value;			}	}}void Matr::Set(int value, int i, int j){	mas[i][j]=value;}[b]void Matr::Show(){	for(int i=0; i<n; i++)	{			for(int j=0; j<m;j++)			{					cout<<"["<<mas[i][j]<<"]";			}			cout<<"\n";	}	cout<<"\n";}[/b]

main.cpp

{	Matr matr1, matr2;	matr1.Input();	matr2.Input();	cout<<"\n"<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	matr1.Set(15, 0, 1);	cout<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	matr1.Copy(matr2);	cout<<"Matrix after copy\n";	cout<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	cout<<"Zapolnenie matrici chislom\n\n";	matr1.Set1(5);	cout<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	cout<<"Summ of first matrix="<<matr1.Summ()<<"\n\n";	cout<<"Summ of second matrix="<<matr2.Summ()<<"\n\n";	cout<<"Kolichestvo elementov pervoi matrici="<<matr1.Element()<<"\n\n";	cout<<"Kolichestvo elementov vtoroi matrici="<<matr2.Element()<<"\n\n";	getch();	return 0;}

Помогите мне надо чтобы в программе был подсчет сколько раз используется функция void Matr::Show() и количество выводыло не экран. Программа консольная, вот текст:

.h

class Matr{private:int n, m;int**mas;public:Matr();Matr(int num);Matr(Matr &M);~Matr();//void Create(int num);void Copy(Matr M);float Summ();void Input();void Set1(int value);void Set(int value, int i, int j);void Show();int Element();};

.cpp

Matr::Matr(){	n=2;	m=2;	mas=new int*[n];	for(int i=0; i<n; i++)			mas[i]=new int[m];	for(int j=0; j<m;j++)			for(int i=0; i<n; i++)					mas[i][j]=0;}Matr::Matr(int num){	n=num;	m=num;	mas=new int*[n];	for(int i=0; i<n; i++)	{			mas[i]=new int[m];	}	for(int j=0; j<m;j++)	{			for(int i=0; i<n; i++)					mas[i][j]=0;	}}Matr::Matr(Matr &M){	n=M.n;	m=M.m;	mas=new int*[n];	for(int i=0; i<n; i++)	{			mas[i]=new int[m];	}	for(int j=0; j<m;j++)	for(int i=0; i<n; i++)	mas[i][j]=M.mas[i][j];}Matr::~Matr(){	if(mas)	{			for(int i=0; i<n; i++)			{					delete[]mas[i];			}			delete[]mas;	}} /*void Matr::Create(int num){	if(mas)	{	for(int i=0; i<n; i++)	{	delete[]mas[i];	}			delete[]mas;	}	n=num;	m=num;	mas=new int*[n];	for(int i=0; i<n; i++)			mas[i]=new int[m];	for(int j=0; j<m; j++)	{			for(int i=0; i<n; i++)			mas[i][j]=0;	}} */void Matr::Copy(Matr M){	if(mas)	{	for(int i=0; i<n; i++)	{	delete[]mas[i];	}			delete[]mas;	}	n=M.n;	m=M.m;	mas=new int*[n];	for(int i=0; i<n; i++)	{			mas[i]=new int[m];	}			for(int j=0; j<m;j++)			for(int i=0; i<n; i++)					mas[i][j]=M.mas[i][j];}float Matr::Summ(){	float sum=0.00;	for (int i=0; i<n; i++)	for (int j=0; j<m; j++)	sum+=mas[i][j];	return sum;}void Matr::Input(){	cout<<"Input n: ";	cin>>n;	cout<<"Input m: ";	cin>>m;	mas=new int*[n];	cout<<"Input array:\n";	for(int i=0; i<n; i++)	{			mas[i]=new int[m];			for(int j=0; j<m;j++)			{					cout<<"Input mas["<<i<<"]["<<j<<"]: \n";					cin>>mas[i][j];			}	}}void Matr::Set1(int value){	for(int i=0; i<n; i++)	{			for(int j=0; j<m;j++)			{					mas[i][j]=value;			}	}}void Matr::Set(int value, int i, int j){	mas[i][j]=value;}[b]void Matr::Show(){	for(int i=0; i<n; i++)	{			for(int j=0; j<m;j++)			{					cout<<"["<<mas[i][j]<<"]";			}			cout<<"\n";	}	cout<<"\n";}[/b]

main.cpp

{	Matr matr1, matr2;	matr1.Input();	matr2.Input();	cout<<"\n"<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	matr1.Set(15, 0, 1);	cout<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	matr1.Copy(matr2);	cout<<"Matrix after copy\n";	cout<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	cout<<"Zapolnenie matrici chislom\n\n";	matr1.Set1(5);	cout<<"First matrix\n";	matr1.Show();	cout<<"Second matrix\n";	matr2.Show();	cout<<"Summ of first matrix="<<matr1.Summ()<<"\n\n";	cout<<"Summ of second matrix="<<matr2.Summ()<<"\n\n";	cout<<"Kolichestvo elementov pervoi matrici="<<matr1.Element()<<"\n\n";	cout<<"Kolichestvo elementov vtoroi matrici="<<matr2.Element()<<"\n\n";	getch();	return 0;}

Да и надо сделать подсчет этой функчии через Статический член класса!

Зарание спасибо.

Ссылка на комментарий
Поделиться на другие сайты

Dr0n4eG:

Ну и простыня!

Так в чем дело? Включи в описание класса Matr в разделе public статическую целую переменную, скажем, static int cou, и добавь в функцию Show оператор cou++;

Единственная особенность статических переменных - в классе они только описываются для ограничения их области действия, а на самом деле они в нем не определяются, то есть память для них не отводится, и их надо определять отдельно вне класса как int Matr::cou=0;

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...