Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Hàm tính tích hai ma trận

    Mình viết chương trình tính tích hai ma trận, chạy trên Visual 10 không thấy báo lỗi nhưng chạy thì không tính được, bạn nào biết giúp mình với. Cảm ơn rất nhiều.
    Email mình: phuptha@gmail.com
    Code mình đây:
    Mã:
    #include<iostream>
    #include<conio.h>
    #include<math.h>
    using namespace std;
     void input_matrix(int a[][100], int n, int m)
     {
    	 for(int i=0;i<n;i++)
    		 for(int j=0;j<m;j++)
    		 {
    			 cout<<"a["<<i+1<<"]["<<j+1<<"] = ";
    			 cin>>a[i+1][j+1];
    		 }
     }
     void output_matrix(int a[][100], int n, int m)
     {
    	 cout<<endl;
    	 for(int i=0; i<n;i++)
    	 {
    		 for(int j=0; j<m;j++)
    			 cout<<a[i+1][j+1]<<"\t";
    		 cout<<endl<<endl;
    	 }
     }
     //multiplication
     void mul_matrix(int a[][100], int b[][100],int t[][100], int n,int m, int p)
     {
    	 
    	 for(int i=0;i<n;i++)
    		 for(int j=0;j<p;j++)
    		 {
    			 t[i][j]=0;
    			 for (int k=0;i<m;k++)
    				 t[i][j]=t[i][j]+a[i][k]*b[k][j];
    		 }
    }
     
    
     void main()
     {
    	 int a[100][100], b[100][100], t[100][100],n,m,p;
    	 //input matrix 1
    	 cout<<"Input matrix 1"<<endl;
    	 cout<<"Row = ";
    	 cin>>n;
    	 cout<<"Column = ";
    	 cin>>m;
    	 input_matrix(a,n,m);
    	  //input matrix 1
    	 cout<<"Input matrix 2"<<endl;
    	 cout<<"Defaut row = "<<m<<endl;
    	 cout<<"Column (matrix 2) = ";
    	 cin>>p;
    	 input_matrix(a,m,p);
    	 cout<<endl;
    	 //output matrix 1
    	 output_matrix(a,n,m);
    	 //output matrix 2
    	 output_matrix(a,m,p);
    	
    	 cout<<endl<<endl;
    	 cout<<"Tich hai ma tran: "<<endl;
    	 mul_matrix(a,b,t,n,m,p);
    	 output_matrix(t,n,p);
    	 getch();
     }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    void input_matrix(int a[][100], int n, int m)
    {
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    {
    cout<<"a["<<i+1<<"]["<<j+1<<"] = ";
    cin>>a[i+1][j+1];
    }
    }
    Trong hàm này, tại sao ko phải là cin>>a[i][j] mà là a[i+1][j+1]. Trong mảng (1 chiều hoặc 2 chiều) thì phần tử bắt đầu lúc nào cũng là 0. Vì bạn gán cho a[i+1][j+1] nên thành ra phần tử đầu tiên của mảng a là a[0][0] = null mất rồi.
    Tương tự với hàm output.
    Còn về việc VS 2010 chạy ko sai mà ko tính đc là do cú pháp bạn viết đúng, nhưng bạn lại sai thuật toán nên nó ko tính đc.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi phamkhoa0101
    Trong hàm này, tại sao ko phải là cin>>a[i][j] mà là a[i+1][j+1]. Trong mảng (1 chiều hoặc 2 chiều) thì phần tử bắt đầu lúc nào cũng là 0. Vì bạn gán cho a[i+1][j+1] nên thành ra phần tử đầu tiên của mảng a là a[0][0] = null mất rồi.
    Tương tự với hàm output.
    Còn về việc VS 2010 chạy ko sai mà ko tính đc là do cú pháp bạn viết đúng, nhưng bạn lại sai thuật toán nên nó ko tính đc.
    Đã debug cảm ơn bạn nha: successed ^^
    #include<iostream>
    #include<conio.h>
    #include<time.h>
    #include<math.h>
    #include <windows.h>
    using namespace std;
    void input_matrix(int a[][100], int n, int m)
    {
    for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    {
    cout<<"a("<<i+1<<","<<j+1<<") = ";
    cin>>a[i][j];
    }
    }
    void output_matrix(int a[][100], int n, int m)
    {
    cout<<endl;
    for(int i=0; i<n;i++)
    {
    cout<<"\t";
    for(int j=0; j<m;j++)
    cout<<a[i][j]<<"\t";
    cout<<endl<<endl;
    }
    }
    //multiplication
    void mul_matrix(int a[][100], int b[][100],int t[][100], int n,int m, int p)
    {

    for(int i=0;i<n;i++)
    for(int j=0;j<p;j++)
    {
    t[i][j]=0;
    for (int k=0;k<m;k++)
    t[i][j]=t[i][j]+a[i][k]*b[k][j];
    }
    }


    void main()
    {
    int a[100][100], b[100][100], t[100][100],n,m,p;
    //input matrix 1
    cout<<"Input matrix 1"<<endl;
    cout<<"Row = ";
    cin>>n;
    cout<<"Column = ";
    cin>>m;
    input_matrix(a,n,m);
    //input matrix 1
    cout<<"Input matrix 2"<<endl;
    cout<<"Defaut row = "<<m<<endl;
    Sleep(3000);
    cout<<"Column (matrix 2) = ";
    cin>>p;
    input_matrix(b,m,p);
    cout<<endl;
    //output matrix 1
    cout<<endl<<"Matrix A:"<<endl;
    output_matrix(a,n,m);
    //output matrix 2
    cout<<endl<<"Matrix B:"<<endl;
    output_matrix(b,m,p);

    cout<<endl<<endl;
    cout<<"Tich hai ma tran: "<<endl;
    Sleep(3000);
    mul_matrix(a,b,t,n,m,p);
    output_matrix(t,n,p);
    getch();
    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •