Dr0n4eG Опубликовано 17 января, 2010 Жалоба Поделиться Опубликовано 17 января, 2010 Помогите мне надо чтобы в программе был подсчет сколько раз используется функция 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;} Да и надо сделать подсчет этой функчии через Статический член класса! Зарание спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 18 января, 2010 Жалоба Поделиться Опубликовано 18 января, 2010 (изменено) Dr0n4eG: Ну и простыня! Так в чем дело? Включи в описание класса Matr в разделе public статическую целую переменную, скажем, static int cou, и добавь в функцию Show оператор cou++; Единственная особенность статических переменных - в классе они только описываются для ограничения их области действия, а на самом деле они в нем не определяются, то есть память для них не отводится, и их надо определять отдельно вне класса как int Matr::cou=0; Изменено 18 января, 2010 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Dr0n4eG Опубликовано 18 января, 2010 Автор Жалоба Поделиться Опубликовано 18 января, 2010 Спасибо всё работает :cool: Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения