Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: Tính tổng các phần tử trên dòng bất kì của ma trân !

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Exclamation Tính tổng các phần tử trên dòng bất kì của ma trân !

    code của mình đây, nhờ các bạn góp ý giúp
    Code:
    double matran::tongdong(int k)
    	double ret=0;
    	p[k]=new double[sc];
    	for(int i=0;i<sc;i++)
    		ret+=p[k][i];
    	return ret;
    mình đã khai báo các hàm thành phần trong public của class rồi !!!!!
    Đã được chỉnh sửa lần cuối bởi loveboom3012 : 23-08-2011 lúc 11:12 PM.

  2. #2
    Ngày gia nhập
    04 2011
    Bài viết
    13

    Theo hiểu biết của mình thì bạn sai cơ bản. p cần phải được initiate trong constructor, nó tồn tại tồi mới nói chuyện tính tổng, chưa kể đến memory leak...
    Bạn thiếu cả {} để gói lệnh nữa...
    Tốt hơn hết là bạn compile nó rồi theo hướng dẫn của compiler mà sửa...

  3. #3
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Trích dẫn Nguyên bản được gửi bởi thachthao Xem bài viết
    Theo hiểu biết của mình thì bạn sai cơ bản. p cần phải được initiate trong constructor, nó tồn tại tồi mới nói chuyện tính tổng, chưa kể đến memory leak...
    Bạn thiếu cả {} để gói lệnh nữa...
    Tốt hơn hết là bạn compile nó rồi theo hướng dẫn của compiler mà sửa...
    mình đã khai báo p trong phần private rồi :
    compile không báo lỗi gì cả
    Code:
    double matran::tongdong(int k)
    {
    	double ret=0;
    		p[k]=new double[sc];
    	for(int j=0;j<sc;j++)
    		
    		ret+=p[k][j];
    	return ret;
    }
    ai giúp mình với !!!!!!!!

  4. #4
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    bạn phải đưa phần khai báo class thì mới hiểu được chứ có mỗi cái hàm thế này không hiểu nổi
    I'll come back

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    bạn phải đưa phần khai báo class thì mới hiểu được chứ có mỗi cái hàm thế này không hiểu nổi
    khổ quá mình đã khai báo class rồi
    Code:
    #include <iostream.h>
    class matran
    {
    private:
    	int sd,sc;
    	double **p;
    public:
    	matran();
    	matran(int sd1,int sc1);
    	matran(const matran &u);
    	~matran();
    	void nhap();
    	void xuat();
    	double tongdong(int k);
    	int laysd();
    	int laysc();
    	matran cong(const matran &u);
    	matran nhan(const matran &u);
    };
    matran::~matran()
    {
    	for(int i=0;i<sd;i++)
    		delete []p[i];
    	delete []p;
    	p=NULL;		
    }
    matran::matran()
    {
    	sd=0;
    	sc=0;
    	p=NULL;
    }
    matran::matran(int sd1,int sc1)
    {
    	sd=sd1;
    	sc=sc1;
    	p=new double*[sd];
    	for(int i=0;i<sd;i++)
    		p[i]=new double[sc];
    }
    void matran::nhap()
    {
    	if(p==NULL)
    	{
    		cout<<"Nhap so dong:";
    		cin>>sd;
    		p=new double*[sd];
    		cout<<"Nhap so cot:";
    		cin>>sc;
    		for(int i=0;i<sd;i++)
    			p[i]=new double[sc];
    	}
    	for(int i=0;i<sd;i++)
    		for(int j=0;j<sc;j++)
    		{
    			cout<<"phan tu thu ["<<i<<"]["<<j<<"]:";
    			cin>>p[i][j];
    		}
    }
    void matran::xuat()
    {
    	for(int i=0;i<sd;i++)
    	{
    		for(int j=0;j<sc;j++)
    			cout<<p[i][j]<<"\t";
    		cout<<"\n";
    	}
    }
    double matran::tongdong(int k)
    {
    	double ret=0;
    //	for(int i=0;i<sc;i++)
    		p[k]=new double[sc]; //cap phat vung nho dong cho dong thu k voi sc phan tu
    	for(int j=0;j<sc;j++)
    	{
    		ret+=p[k][j]; // tinh tong cac phan tu tren dong thu k
    	}
    	return ret;
    }
    void main()
    {
    	matran a;
    	a.nhap();
    	cout<<"Ma tran a:\n";
    	a.xuat();
    	cout<<"Tong cac phan tu dong thu 2="<<a.tongdong(2);
    }

  6. #6
    Ngày gia nhập
    04 2011
    Nơi ở
    Heaven
    Bài viết
    90

    Mặc định Tính tổng các phần tử trên dòng bất kì của ma trân !

    Trích dẫn Nguyên bản được gửi bởi loveboom3012 Xem bài viết
    khổ quá mình đã khai báo class rồi
    Code:
    #include <iostream.h>
    class matran
    {
    private:
    	int sd,sc;
    	double **p;
    public:
    	matran();
    	matran(int sd1,int sc1);
    	matran(const matran &u);
    	~matran();
    	void nhap();
    	void xuat();
    	double tongdong(int k);
    	int laysd();
    	int laysc();
    	matran cong(const matran &u);
    	matran nhan(const matran &u);
    };
    matran::~matran()
    {
    	for(int i=0;i<sd;i++)
    		delete []p[i];
    	delete []p;
    	p=NULL;		
    }
    matran::matran()
    {
    	sd=0;
    	sc=0;
    	p=NULL;
    }
    matran::matran(int sd1,int sc1)
    {
    	sd=sd1;
    	sc=sc1;
    	p=new double*[sd];
    	for(int i=0;i<sd;i++)
    		p[i]=new double[sc];
    }
    void matran::nhap()
    {
    	if(p==NULL)
    	{
    		cout<<"Nhap so dong:";
    		cin>>sd;
    		p=new double*[sd];
    		cout<<"Nhap so cot:";
    		cin>>sc;
    		for(int i=0;i<sd;i++)
    			p[i]=new double[sc];
    	}
    	for(int i=0;i<sd;i++)
    		for(int j=0;j<sc;j++)
    		{
    			cout<<"phan tu thu ["<<i<<"]["<<j<<"]:";
    			cin>>p[i][j];
    		}
    }
    void matran::xuat()
    {
    	for(int i=0;i<sd;i++)
    	{
    		for(int j=0;j<sc;j++)
    			cout<<p[i][j]<<"\t";
    		cout<<"\n";
    	}
    }
    double matran::tongdong(int k)
    {
    	double ret=0;
    //	for(int i=0;i<sc;i++)
    		//bỏ cái dòng này đi bạn p[k]=new double[sc]; //cap phat vung nho dong cho dong thu k voi sc phan tu
    	for(int j=0;j<sc;j++)
    	{
    		ret+=p[k][j]; // tinh tong cac phan tu tren dong thu k
    	}
    	return ret;
    }
    void main()
    {
    	matran a;
    	a.nhap();
    	cout<<"Ma tran a:\n";
    	a.xuat();
    	cout<<"Tong cac phan tu dong thu 2="<<a.tongdong(2);
    }
    p[k]=new double[sc] làm gì vậy bạn, vậy nó khởi tạo cái mới chứ có tính của ma trận đã nhập đâu
    I'll come back

  7. #7
    Ngày gia nhập
    07 2011
    Bài viết
    22

    Trích dẫn Nguyên bản được gửi bởi stupid_genius Xem bài viết
    p[k]=new double[sc] làm gì vậy bạn, vậy nó khởi tạo cái mới chứ có tính của ma trận đã nhập đâu
    thanks bạn nhiều lắm !!!!Mình làm được rồi , mình mới vọc C++ à, còn nhiều cái thấy mập mờ lắm , chắc còn hỏi bạn dài dài đây hj

  8. #8
    Ngày gia nhập
    04 2011
    Bài viết
    13

    Góp ý nhỏ: Destructor của bạn phải check cỡ của ma trận trước khi delete nó, không có thể sẽ crush at run-time nếu cỡ ma trận bằng zero. Mình mới viết class Array và bị lỗi này :P

Các đề tài tương tự

  1. Hiển thị số sản phẩm trên một dòng trong asp.net
    Gửi bởi hoa_dv trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 06-08-2013, 10:05 PM
  2. Cách hiển thị nhiều sản phẩm trên 1 dòng ?
    Gửi bởi ninhc1010l trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 12-09-2012, 08:41 PM
  3. Nên viết 1 dòng code dài trên 1 dòng hay trên nhiều dòng??
    Gửi bởi longtth trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 25-10-2010, 01:07 AM
  4. Lập trình tạo một dòng chữ chạy từ trái sang phải trên màn hình
    Gửi bởi oshea trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 14-10-2009, 01:16 PM
  5. Sắp xếp các phần tữ trên cùng 1 dòng theo thứ tự tăng dần trong mảng 2 chiều
    Gửi bởi muclup trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 07-03-2009, 02:21 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn