Programming Language
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


FOREVER STUDY
 
Trang ChínhPortalTìm kiếmLatest imagesĐăng kýĐăng Nhập
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
» Tối ưu hóa thuật toán
toán tử trong C++ Icon_minitimeThu Apr 14, 2011 8:47 pm by gianggiangonline

» Can moi nguoi giup do lam bai tap nay
toán tử trong C++ Icon_minitimeSat Mar 26, 2011 5:23 am by nameless2604

» Bài tập tuần 1.
toán tử trong C++ Icon_minitimeThu Feb 17, 2011 11:40 pm by Admin

»  tên hàn quốc của tớ là jung hyun in! tên của bạn là gì vậy?
toán tử trong C++ Icon_minitimeThu Dec 30, 2010 3:17 am by gianggiangonline

» Anh không chỉ quan trọng............như một chiếc đồng hồ báo thức của em!!!
toán tử trong C++ Icon_minitimeSat Oct 23, 2010 10:58 am by chien_le

» Có những điều thú vị mà không nói ra thì ai cũng biết
toán tử trong C++ Icon_minitimeTue Oct 19, 2010 11:03 pm by gianggiangonline

» [PopCap Game] Plants Vs Zombies [MF]
toán tử trong C++ Icon_minitimeTue Oct 19, 2010 9:25 pm by kingofdrak

» help me me memememememem
toán tử trong C++ Icon_minitimeMon Oct 18, 2010 10:22 am by chien_le

» 3 bai tap ve de quy
toán tử trong C++ Icon_minitimeTue Oct 12, 2010 6:36 am by chien_le

Navigation
 Portal
 Diễn Đàn
 Thành viên
 Lý lịch
 Trợ giúp
 Tìm kiếm
Diễn Đàn
Affiliates
free forum


 

 toán tử trong C++

Go down 
3 posters
Tác giảThông điệp
mrmax




Tổng số bài gửi : 59
Points : 5111
Reputation : 0
Join date : 01/09/2010

toán tử trong C++ Empty
Bài gửiTiêu đề: toán tử trong C++   toán tử trong C++ Icon_minitimeWed Sep 01, 2010 7:02 am

Đây là một bài tập về ma trận có xây dựng các toán tử.mọi người vào debug hộ mình với .kho hiểu sai ở đâu

#include<conio.h>
#include<iostream.h>
class MT
{
private:
int row,col;
int **a;
public:
MT();
~MT();
void nhap();
void in();
MT operator+(const MT &x,const MT &y);
MT operator-(const MT &x,const MT &y);
MT operator*(const MT &x,const MT &y);
};
MT::MT()
{
a=new int * [row+1];
for(int i=1;i<=row;i++)
a[i]=new int[col+1];
}
MT::~MT()
{
if(a!=NULL){
delete[] a[0];
delete[] a;}
}
void MT::nhap()
{
cout<<"nhap ma tran \n";
cout<<"nhap so dong row=";
cin>>row;
cout<<"nhap so cot col=";
cin>>col;
for(int i=1;i<=row;i++)
for(int j=1;j<=col;j++)
{
cout<<"phan tu hang "<<i<<" cot "<<j<<':';
cin>>a[i][j];
}
}
void MT::in()
{
for(int i=1;i<=row;i++)
{
cout<<"\n";
for(int j=1;j<=col;j++)
{
cout<<a[i][j];
}
}
}
MT MT::operator+(const MT &x,const MT &y)
{
MT z;
if(x.row==y.row&&x.col==y.col)
{
for(int i=1;i<=x.row;i++)
for(int j=1;j<=x.col;j++)
z.a[i][j]=x.a[i][j]+y.a[i][j];
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x,y;
}
}
MT MT::operator-(const MT &x,const MT &y)
{
MT z;
if(x.row==y.row&&x.col==y.col)
{
for(int i=1;i<=x.row;i++)
for(int j=1;j<=x.col;j++)
z.a[i][j]=x.a[i][j]-y.a[i][j];
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x,y;
}
}
MT MT::operator*(const MT &x,const MT &y)
{
MT z;
if(x.row==y.col&&x.col==y.row){
for(int i=1;i<=x.row;i++)
for(int j=1;j<=y.col;j++)
for(int k=1;k<=x.col;k++)
z.a[i][j]+=x.a[i][k]*y.a[k][j];
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x,y;
}
}
int main()
{
MT a,b,c;
a.nhap();
b.nhap();
cout<<"ma tran a:\n";
a.in();
cout<<"ma tran b:\n";
b.in();
c=a+b;
cout<<"ma tran tong:\n";
c.in();
c=a-b;
cout<<"ma tran hieu:\n";
c.in();
c=a*b;
cout<<"ma tran tich:\n";
c.in();
getch();
}





Về Đầu Trang Go down
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeSun Sep 05, 2010 8:26 am

Sai sót:
+MT(); //Không thấy sử dụng
~MT();
+MT operator+(const MT &x,const MT &y);
MT operator-(const MT &x,const MT &y);
MT operator*(const MT &x,const MT &y);
->Chỉ đc khai báo 1 ma trận thôi vì là hàm phương thức
Sửa: MT operator+(const MT &y); //phương thức của đối x ẩn(ứng với con trỏ this)
hoặc: friend MT operator+(const MT &x,const MT &y); //Hàm bạn
+Ma trận nhập và các ma trận z trả về của hàm (+,-,*) chưa đc cấp phát bộ nhớ

Bài làm,chưa hoàn chỉnh lắm mong mọi người góp ý, sửa chữa:
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
//using namespace std;

class MT
{
private:
int m,n;
float **a;
public:
/*Ở đây có thêm hàm cấp phát bộ nhớ động thì tốt hơn, mong mọi người giúp dùm chỗ này*/
friend ostream& operator<<(ostream& os,const MT &x);
friend istream& operator>>(istream& is,MT &x);
MT operator+(const MT &x2);
MT operator-(const MT &x2);
MT operator*(const MT &x2);
};
//Hien thi ma tran
ostream& operator<<(ostream& os,const MT &x)
{
os<<setiosflags(ios::fixed)<<setprecision(2);//Hien thi 2 chu so phan thap phan
for(int i=1;i<=x.m;i++)
for(int j=1;j<=x.n;j++)
{
if(j==1) os<<"\n";
os<<setw( 8 ) <<x.a[i][j];
}
return os;
}
//Nhap ma tran
istream& operator>>(istream& is,MT &x)
{
cout<<"\n So hang cua ma tran: m= ";
is>>x.m;
cout<<" So cot cua ma tran: n= ";
is>>x.n;
x.a=new float*[x.m+1];
for(int i=1;i<=x.m;i++)
x.a[i]=new float[x.n+1];
//tạo hàm cấp nó báo lỗi nên phải làm trực tiếp chỗ này
for(int i=1;i<=x.m;i++)
for(int j=1;j<=x.n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]= ";
is>>x.a[i][j];
}
return is;
}
//Cong hai ma tran
MT MT::operator+(const MT &x2)
{
MT x;
if((m!=x2.m)||(n!=x2.n))
{
cout<<"\n +Khong thuc hien duoc phep cong";
getch();
return x2;
}
else
{
int h,c;
h=x.m=m;
c=x.n=n;
x.a=new float*[h+1];
for(int i=1;i<=h;i++)
x.a[i]=new float[c+1];

for(int i=1;i<=h;i++)
for(int j=1;j<=c;j++)
x.a[i][j]=a[i][j]+x2.a[i][j];
return x;
}
}
//Hieu hai ma tran
MT MT::operator-(const MT &x2)
{
MT x;
if((m!=x2.m)||(n!=x2.n))
{
cout<<"\n +Khong tru duoc hai ma tran";
getch();
return x2;
}
else
{
int h,c;
h=x.m=m;
c=x.n=n;
x.a=new float*[h+1];
for(int i=1;i<=h;i++)
x.a[i]=new float[c+1];

for(int i=1;i<=h;i++)
for(int j=1;j<=c;j++)
x.a[i][j]=a[i][j]-x2.a[i][j];
return x;
}
}
//Nhan hai ma tran
MT MT::operator *(const MT &x2)
{
MT x;
if(n!=x2.m)
{
cout<<"\n +Khong the thuc hien phep nhan";
getch();
return x2;
}
else
{
int h,c;
h=x.m=m;
c=x.n=x2.n;
x.a=new float*[h+1];
for(int i=1;i<=h;i++)
x.a[i]=new float[c+1];

for(int i=1;i<=h;i++)
for(int j=1;j<=c;j++)
{
x.a[i][j]=0;
for(int k=1;k<=n;k++)
x.a[i][j]+=a[i][k]*x2.a[k][j];
}
return x;
}
}
int main()
{
MT x1,x2,x,y,z;
cout<<"\n Nhap ma tran x1: ";
cin>>x1;
cout<<"\n Nhap ma tran x2: ";
cin>>x2;
x=x1+x2;
cout<<"\n Tong hai ma tran: "<<x;
y=x1-x2;
cout<<"\n Hieu hai ma tran: "<<y;
z=x1*x2;
cout<<"\n Tich hai ma tran: "<<z;
getch();
}



pale pale
Về Đầu Trang Go down
https://study.all-up.com/forum.htm
mrmax




Tổng số bài gửi : 59
Points : 5111
Reputation : 0
Join date : 01/09/2010

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeSun Sep 05, 2010 8:53 am

ở đây các bạn thử xem phần khai báo toán tử ở tr.78 sách thầy ất cũng khai báo toán tử như mình đó thôi)
con con trỏ this là có sẵn nếu dùng cũng dc không dùng cũng dc(họ chỉ khuyên là nên dùng thôi)
hàm tạo,và hàm hủy buộc phải sử dụng do có khai báo con trỏ.(không nên cấp phát bộ nhớ như hưng vừa nói mà nên dùng hàm tạo bởi sẽ rất lôi thôi)
việc gọi hàm tạo không đối thì dùng suốt đấy thôi.
MT x; //thực chất là gọi tới hàm tạo không đối
mình chỉ băn khoăn là có nên viết thêm hàm tạo có đối hay không
còn phương thức nhập và in thì cái nào cũng được(cái này là do thói quen mỗi người)
còn về hàm hủy thì khi nào kết thúc chương trình trình biên dịch sẽ gọi hàm hủy thay vì hàm hủy mặc định để giải phóng bộ nhớ
Về Đầu Trang Go down
mrmax




Tổng số bài gửi : 59
Points : 5111
Reputation : 0
Join date : 01/09/2010

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeSun Sep 05, 2010 9:54 am

Đây là bản sửa lỗi tạm thời của mình theo góp í của hưng tuy chay dc nhung ko chinh xac.có lẽ là do hàm tạo.cái hàm tạo của mình không thể bỏ đc chỉ là nó khai báo chưa đúng thôi.mong nhận được đóng góp í kiến của mọi người

#include<conio.h>
#include
<iostream.h>
class MT
{
private:
int row,col;
int **a;
public:
MT();
MT(int row1,int col1);
~MT();
MT operator+(const MT &x);
MT operator-(const MT &x);
MT operator*(const MT &x);
friend ostream& operator<<(ostream& os,const MT &x);
friend istream& operator>>(istream& is,MT &x);
};
// ham tao khong doi
MT::MT()
{
this->row=this->col=0;
this->a=NULL;
}
//ham tao co doi
MT::MT(int row1,int col1)
{
this->row=row1; this->col=col1;
this->a=new int * [row1+1];
for(int i=1;i<=row1;i++)
a=new int[col1+1];
}
//ham huy
MT::~MT()
{
if(a!=NULL)
{
delete[] a[0];
delete[] a;
}
a=NULL;
}
//toan tu xuat
ostream& operator<<(ostream& os,const MT &x)
{
for(int i=1;i<=x.row;i++)
for(int j=1;j<=x.col;j++)
{
if(j==1) os<<"\n\n";
os<
<<" ";
}
return os;
}
//toan tu nhap
istream& operator>>(istream& is,MT &x)
{
cout<<"\n"<<"So hang cua ma tran: m= ";
is>>x.row;
cout<<"So cot cua ma tran: n= ";
is>>x.col;

x.a=new int*[x.row+1];
for(int i=1;i<=x.row;i++)
x.a[i]=new int[x.col+1];

for(int i=1;i<=x.row;i++)
for(int j=1;j<=x.col;j++)
{
cout<<"a["<
<<"]["<<<"]= ";
is>>x.a[i][j];
}
return is;
}
//toan tu cong
MT MT::operator+(const MT &x)
{
MT z(row,col);
if(x.row==row && x.col==col)
{
for(int i=1;i<=row;++i)
for(int j=1;j<=col;++j)
z.a[i][j] = x.a[i][j] + a[i][j];
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x;
}
}
//toan tu tru
MT MT::operator-(const MT &x)
{
MT z(row,col);
if(x.row==row && x.col==col)
{
for(int i=1;i<=row;i++)
for(int j=1;j<=col;j++)
z.a[i][j] =a[i][j] - x.a[i][j] ;
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x;
}
}
//toan tu nhan
MT MT::operator*(const MT &x)
{
MT z(row,row);
if(x.row==col && x.col==row){
for(int i=1;i<=row;i++)
for(int j=1;j<=x.col;j++)
for(int k=1;k<=col;k++)
z.a[i][j] += x.a[i][k] * a[k][j];
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x;
}
}

int main()
{
MT a,b,c;
cout<<"nhap ma tran a";
cin>>a;
cout<<"nhap ma tran b";
cin>>b;
cout<<"ma tran a:";
cout<

cout<<"\n"<<"ma tran b:";
cout<

c=a+b;
cout<<"\n"<<"ma tran tong:";
cout<

c=a-b;
cout<<"\n"<<"ma tran hieu:";
cout<

c=a*b;
cout<<"\n"<<"ma tran tich:";
cout<

getch();
}


Được sửa bởi mrmax ngày Mon Sep 06, 2010 7:21 am; sửa lần 3.
Về Đầu Trang Go down
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeSun Sep 05, 2010 10:01 am

Mình chưa đọc tới phần hàm tạo, hàm hủy nên chưa có kinh nghiệm lắm.
Để xem xét kĩ lại rồi sẽ quay trở lại giải quyết bài này Very Happy
Về Đầu Trang Go down
https://study.all-up.com/forum.htm
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeMon Sep 06, 2010 10:07 pm

Hình như hàm hủy của Thành có vấn đề
Tôi không cho hàm hủy vào thì chạy đc
Về Đầu Trang Go down
https://study.all-up.com/forum.htm
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeTue Sep 07, 2010 6:55 am

Mình vừa tranh thủ code một cách khác của bài ma trận, mọi người xem thử:


//////////////////////////////////
/// Bai toan tren ma tran
/// Bui Dinh Cuong
/// 07-09-2010
#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<iomanip.h>
#include<conio.h>

void Cap_Phat_Bo_Nho(int **ipMatrix, int iHang, int iCot);
void Nhap_Gia_Tri(int *iMatrix, int iHang, int iCot);
void Cong(int *iMatrixC, int *iMatrixA, int *iMatrixB, int iHangC, int iCotC);
void Nhan(int *iMatrixD, int *iMatrixA, int *iMatrixB, int iHangD, int iCotD,int iCotA);
void Hien_Thi(int *iMatrix, int iHang, int iCot);
void Giai_Phong_Bo_Nho(int *iMatrix);

int main()
{
int *iMatrixA = NULL, *iMatrixB = NULL, *iMatrixC = NULL, *iMatrixD = NULL;
int iHangA, iCotA, iHangB, iCotB;
int iHangC, iCotC, iHangD, iCotD;
do
{

cout<<"\n So hang cua ma tran A: ";
cin>>iHangA;
cout<<"\n So cot cua ma tran A: ";
cin>>iCotA;
if(iHangA<=0||iCotA<=0)
{
cout<<"\n Hay nhap lai.";
}
}while(iHangA<=0||iCotA<=0);
do
{

cout<<"\n So hang cua ma tran B: ";
cin>>iHangB;
cout<<"\n So cot cua ma tran B: ";
cin>>iCotB;
if(iHangB<=0||iCotB<=0)
{
cout<<"\n Hay nhap lai.";
}
}while(iHangB<=0||iCotB<=0);
if((iHangA!=iHangB&&iCotA!=iCotB)&&(iCotA!=iHangB))
{
cout<<"\n Hai ma tran khong the thuc hien cong hoac nhan";
return 0;
}
/////////////////////////////////////
/// Cap phat bo nho, Nhap gia tri
Cap_Phat_Bo_Nho(&iMatrixA,iHangA,iCotA);
Nhap_Gia_Tri(iMatrixA,iHangA,iCotA);
Cap_Phat_Bo_Nho(&iMatrixB,iHangB,iCotB);
Nhap_Gia_Tri(iMatrixB,iHangB,iCotB);
//Hien tri hai ma tran A,B
cout<<"\n\n Ma tran A:\n\n";
Hien_Thi(iMatrixA, iHangA, iCotA);
cout<<"\n\n Ma tran B:\n\n";
Hien_Thi(iMatrixB, iHangB, iCotB);
///////////////////////////////////////
//// Tinh toan
///// Cong hai ma tran A,B
if( (iHangA!=iHangB) || (iCotA!=iCotB) )
{
cout<<"\n Khong the cong hai ma tran nay.";
}
else
{
iHangC = iHangA;
iCotC = iCotA;
Cap_Phat_Bo_Nho(&iMatrixC,iHangC,iCotC);
Cong(iMatrixC, iMatrixA, iMatrixB, iHangC, iCotC);
cout<<"\n\n Ma tran tong:\n\n";
Hien_Thi(iMatrixC, iHangC, iCotC);
}
/// Nhan hia ma tran A,B
if(iCotA!=iHangB)
{
cout<<"\n Khong the nhan hai ma tran nay.";
}
else
{
iHangD = iHangA;
iCotD = iCotB;
Cap_Phat_Bo_Nho(&iMatrixD,iHangD,iCotD);
Nhan(iMatrixD, iMatrixA, iMatrixB, iHangD, iCotD, iCotA);
cout<<"\n\n Ma tran tich:\n\n";
Hien_Thi(iMatrixD, iHangD, iCotD);
}
//////////////////////////////////
/////// Giai phong bo nho
Giai_Phong_Bo_Nho(iMatrixA);
Giai_Phong_Bo_Nho(iMatrixB);
Giai_Phong_Bo_Nho(iMatrixC);
Giai_Phong_Bo_Nho(iMatrixD);
cout<<"\n\n An mot phim de ket thuc chuong trinh...";
getch();
return 0;
}

//////////////////////////////
// Xay dung cac ham

///////////////////////////
//// Ham cap phat bo nho
void Cap_Phat_Bo_Nho(int **ipMatrix, int iHang, int iCot)
{
*ipMatrix = new int [iHang*iCot];
if(*ipMatrix == NULL)
{
cout<<"\n Khong du bo nho.";
return ;
}
}

////////////////////////
/// Ham nhap gia tri
void Nhap_Gia_Tri(int *iMatrix, int iHang, int iCot)
{
int i,j;
for(i=0;i<iHang;i++)
{
for(j=0;j<iCot;j++)
{
iMatrix[i*iCot+j] = rand()%10 + 2;
}
}
}
/////////////////////////////
/// HAM CONG HAI MA TRAN
void Cong(int *iMatrixC, int *iMatrixA, int *iMatrixB, int iHangC, int iCotC)
{
int i,j;
for(i=0;i<iHangC;i++)
{
for(j=0;j<iCotC;j++)
{
iMatrixC[i*iCotC+j] = iMatrixA[i*iCotC+j] + iMatrixB[i*iCotC+j];
}
}
}
//////////////////////////////
//// Ham nhan hai ma tran
void Nhan(int *iMatrixD, int *iMatrixA, int *iMatrixB, int iHangD, int iCotD, int iCotA)
{
int i,j,k;
for(i=0; i < iHangD; i++)
{
for(j=0; j < iCotD; j++)
{
iMatrixD[i*iCotD + j] = 0;
for(k=0; k < iCotA; k++)
{
iMatrixD[i*iCotD + j] = iMatrixD[i*iCotD + j] + iMatrixA[j*iCotA+k] * iMatrixB[k*iCotD+i];
}
}
}
}
////////////////////////
// Ham hien thi
void Hien_Thi(int *iMatrix, int iHang, int iCot)
{
int i,j;
for(i=0;i<iHang;i++)
{
cout<<"\n";
for(j=0;j<iCot;j++)
{
cout<<setw(7);
cout<<iMatrix[i*iCot+j];
}
}
}

//////////////////////////////
/// Ham giai phong bo nho

void Giai_Phong_Bo_Nho(int *iMatrix)
{
if(iMatrix != NULL)
{
delete [] iMatrix;
}
}



Do your best, the rest will come!!
Về Đầu Trang Go down
https://study.all-up.com
mrmax




Tổng số bài gửi : 59
Points : 5111
Reputation : 0
Join date : 01/09/2010

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeTue Sep 07, 2010 7:38 am

Thưa các bác sau một hồi vật lộn, em đã cho ra sản phẩm cuối cùng.đảm báo chạy êm Smile


#include<conio.h>
#include<iostream.h>
class MT
{
private:
int row,col;
int **a;
public:
MT();
MT(int row1,int col1);
~MT();
MT operator+(const MT &x);
MT operator-(const MT &x);
MT operator*(const MT &x);
friend ostream& operator<<(ostream& os,const MT &x);
friend istream& operator>>(istream& is,MT &x);
};
// ham tao khong doi
MT::MT()
{
this->row=this->col=0;
this->a=NULL;
}
//ham tao co doi
MT::MT(int row1,int col1)
{
this->row=row1; this->col=col1;
this->a=new int * [row1+1];
for(int i=1;i<=row1;i++)
a[i]=new int[col1+1];
}
//ham huy
MT::~MT()
{
if(a!=NULL)
a=NULL;
}
//toan tu xuat
ostream& operator<<(ostream& os,const MT &x)
{
for(int i=1;i<=x.row;i++)
for(int j=1;j<=x.col;j++)
{
if(j==1) os<<"\n\n";
os<<x.a[i][j]<<" ";
}
return os;
}
//toan tu nhap
istream& operator>>(istream& is,MT &x)
{
cout<<"\n"<<"So hang cua ma tran: m= ";
is>>x.row;
cout<<"So cot cua ma tran: n= ";
is>>x.col;

x.a=new int*[x.row+1];
for(int i=1;i<=x.row;i++)
x.a[i]=new int[x.col+1];

for(int i=1;i<=x.row;i++)
for(int j=1;j<=x.col;j++)
{
cout<<"a["<<i<<"]["<<j<<"]= ";
is>>x.a[i][j];
}
return is;
}
//toan tu cong
MT MT::operator+(const MT &x)
{
MT z(row,col);
if(x.row==row && x.col==col)
{
for(int i=1;i<=row;++i)
for(int j=1;j<=col;++j)
z.a[i][j] = x.a[i][j] + a[i][j];
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x;
}
}
//toan tu tru
MT MT::operator-(const MT &x)
{
MT z(row,col);
if(x.row==row && x.col==col)
{
for(int i=1;i<=row;i++)
for(int j=1;j<=col;j++)
z.a[i][j] =a[i][j] - x.a[i][j] ;
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x;
}
}
//toan tu nhan
MT MT::operator*(const MT &x)
{
MT z(row,row);
if(x.row==col && x.col==row){
for(int i=1;i<=row;i++)
for(int j=1;j<=row;j++)
{
z.a[i][j]=0;
for(int k=1;k<=col;k++)
z.a[i][j] += a[i][k] * x.a[k][j];
}
return z;
}
else{
cout<<"khong the thuc hien";
getch();
return x;
}
}

int main()
{
MT a,b,c;
cout<<"nhap ma tran a";
cin>>a;
cout<<"nhap ma tran b";
cin>>b;
cout<<"ma tran a:";
cout<<a;
cout<<"\n"<<"ma tran b:";
cout<<b;
c=a+b;
cout<<"\n"<<"ma tran tong:";
cout<<c;
c=a-b;
cout<<"\n"<<"ma tran hieu:";
cout<<c;
c=a*b;
cout<<"\n"<<"ma tran tich:";
cout<<c;
getch();
}

Về Đầu Trang Go down
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitimeWed Sep 08, 2010 6:50 am

Tối ưu hóa cái (thầy vừa dạy)
//toan tu nhan
MT MT::operator*(const MT &x)
{
MT z(row,row);
if(x.row==col && x.col==row){
for(int i=1;i<=row;i++)
for(int j=1;j<=row;j++)
{
int s=0;
for(int k=1;k<=col;k++)
s+= a[i][k] * x.a[k][j];
z.a[i][j]=s;
}
return z;
}
Nếu để z.a[i][j] trong vòng lặp thì tốn thời gian truy nhập vào phần tử z.a[i][j]
Hình như là ~2.n^3
Về Đầu Trang Go down
https://study.all-up.com/forum.htm
Sponsored content





toán tử trong C++ Empty
Bài gửiTiêu đề: Re: toán tử trong C++   toán tử trong C++ Icon_minitime

Về Đầu Trang Go down
 
toán tử trong C++
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Tối ưu hóa thuật toán
» toán rời rạc- nghia dai ca
» CẬP NHẬT NỘI DUNG TRONG GIAI ĐOẠN TỚI
» Anh không chỉ quan trọng............như một chiếc đồng hồ báo thức của em!!!
» Đạt được mục tiêu và thay đổi cuộc đời bạn trong năm 2010

Permissions in this forum:Bạn không có quyền trả lời bài viết
Programming Language :: THẢO LUẬN C & C++-
Chuyển đến