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

Đề tài: Tích hai ma trận

  1. #1
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Mặc định Tích hai ma trận

    Minh có bài sau nhưng không hiểu sao nó cứ sai:
    Mong các bạn giải thích giùm cái:
    Code:
    :
    #include <iostream.h>
    #include <conio.h>
    #include <iomanip.h>
    main()
    {
      int x1;
      cout<<"Hay nhap so hang cua ma tran vuong a:";
      cin >> x1;
     
      int a[x1][x1];int b[x1][x1];int c[x1][x1];
      cout<<"Hay nhap vao cac phan tu cua ma tran a:\n";
      for(int i=1;i<=x1;i++)
      for(int j=1;j<=x1;j++)
      {
         cout<<"a["<<i<<"]["<<j<<"]=";
         cin >> a[i][j];
      }
      cout<<"\nHay nhap vao cac phan tu cua ma tran b:\n";
      for(int i=1;i<=x1;i++)
      for(int j=1;j<=x1;j++)
      {
          cout<<"a["<<i<<"]["<<j<<"]=";
         cin >> a[i][j];
      } 
       
      for(int i=1;i<=x1;i++)
      {
      for(int j=1;j<=x1;j++)
       {
         c[i][j]=0;
              for(int k=1;k<=x1;k++)
              {
              c[i][j] +=a[i][k] * b[k][j];
              }
         }
      }
    for(int i=1;i<=x1;i++)
    {
       for(int j=1;j<=x1;j++)
       {
               cout<<setw(10)<< c[i][j];
               
       }  
       cout<<"\n";
    }
          getch();  
    }

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Trời ơi đây là box mã nguồn bạn sang bên hỏi đáp nha. Để mình move nó sang bên hỏi đáp dùm cậu.
    Đã được chỉnh sửa lần cuối bởi iamvtn : 17-06-2007 lúc 10:19 AM.
    In code we trust

  3. #3
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Rồi bạn xem bài tích hai ma trận của mình nhá.
    PHP Code:
    #include <iostream.h>
    #include <conio.h>
    #include <stdlib.h>
    void tichmt(float a[][10],float b[][10],float c[][10],int hang1,int cot1,int hang2);
    void nhapmt(float a[][10],int hang,int cot);
    void inmt(float a[][10],int hang,int cot);
    void main()
    {
        
    system("color 3e");
        
    float a[10][10],b[10][10],c[10][10];
        
    int hang1,cot1;
       
    cout<<"Moi ban nhap vao ma tran a: \n";
       
    cout<<"Nhap vao so hang cua ma tran a: ";
       
    cin>>hang1;
       
    cout<<"Nhap vao so cot cua ma tran a: ";
       
    cin>>cot1;
       
    nhapmt(a,hang1,cot1);
       
    inmt(a,hang1,cot1);
       
    int hang2,cot2;
       
    cout<<"Moi ban nhap vao ma tran b: \n";
       
    cout<<"Nhap vao so hang cua ma tran b: ";
       
    cin>>hang2;
       do
       {
           
    cout<<"Nhap vao so cot cua ma tran b: ";
           
    cin>>cot2;
       }while(
    cot2 != cot1);
       
    nhapmt(b,hang2,cot2);
       
    inmt(b,hang2,cot2);
       
    cout<<"\nVay tong cua hai ma tran a,b la: \n";
       
    tichmt(a,b,c,hang1,cot1,hang2);
       
    inmt(c,hang1,cot1);
       
    getch();
    }               
    //Nhan hai ma tran thi hai ma tran phai co so cot bang nhau
    void tichmt(float a[][10],float b[][10],float c[][10],int hang1,int cot1,int hang2)
    {
         for (
    int i 0hang1i++)
            for (
    int j 0cot1j++)
            {
              
    c[i][j] = 0;
              for (
    int k 0hang2k++)
                    
    c[i][j] + = a[i][k] * b[k][j];
            }
    }
    void nhapmt(float a[][10],int hang,int cot)
    {
         for(
    int i 0;hang;i++)
       {
           for(
    int j 0cotj++)
          {
               
    cout<<"Nhap vao phan tu ["<<i<<";"<<j<<"]: ";
             
    cin>>a[i][j];
          }
       }
    }
    void inmt(float a[][10],int hang,int cot)
    {
         for(
    int i 0hangi++)
       {
            for(
    int j 0cotj++)
          {
               
    cout<<a[i][j]<<"\t";
          }
          
    cout<<endl;
       }

    In code we trust

  4. #4
    Ngày gia nhập
    05 2007
    Bài viết
    1

    cảm ơn bạn nhé
    nhưng bài mình sai ở đâu nhỉ

  5. #5
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Code:
    int a[x1][x1];int b[x1][x1];int c[x1][x1];
    Dòng này cậu chưa khai báo mảng thì làm sao mà chuyền tham số cho nó được.
    In code we trust

  6. #6
    Ngày gia nhập
    02 2007
    Nơi ở
    TP.HCM - dưới cầu SG
    Bài viết
    12

    Mặc định Tích hai ma trận

    Code:
      int x1;
      cout<<"Hay nhap so hang cua ma tran vuong a:";
      cin >> x1;
     
      int a[x1][x1];int b[x1][x1];int c[x1][x1];
    Trong standard C++ ko cho phép bạn nhập một số và sau đó dùng nó để làm chỉ số cho một mảng. Bạn phải khai báo nó là một hằng số, chẳng hạn int a[20][20], hoặc int b[MAX][MAX] với MAX là một hằng số bạn đã khai báo trước. Ngôn ngữ C yêu cầu vậy bởi vì khi dịch chương trình cho câu lệnh trên, nó cần biết chính xác "phải chừa bao nhiêu ô nhớ cho biến a, b này"
    Nếu bạn muốn dùng một mảng vừa đủ cho dữ liệu nhập, bạn phải dùng cách "xin cấp phát bộ nhớ" ( có lẽ bạn chưa học tới ).
    Thân!
    Đã được chỉnh sửa lần cuối bởi whoru : 17-06-2007 lúc 01:15 PM. Lý do: Cho rõ nghĩa
    Nơi nào khiến anh dừng bước, nơi đó có em.

  7. #7
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Cảm ơn các bạn nhiều nhưng với tổng hai ma trận thì khai báo như thế vẫn đúng:
    Code:
    #include <iostream.h>
    #include <conio.h>
    #include <iomanip.h>
    main()
      {  
      int x,y;
      cout <<"Hay nhap cac hang cot cua mang"<<endl;
      cin >> x>>y;
    	int a[x][y],b[x][y],c[x][y];
    	int i,j;
    	 for (i=1;i<=x;i++)
    		{
    	    	for (j=1;j<=x;j++)
    		      {
    	         	cout<<setw(7)<<"a["<<i<<"]""["<<j<<"]=";cin >>a[i][j];
    	            cout <<"\n";
                   }
    	   }
    		for(i=1;i<=x;i++)
    		     for (j=1;j<=x;j++)
    		      {
    	             cout<<"b["<<i<<"]""["<<j<<"]=";
    	             cin >> b[i][j];
    	 	      }
    		for(i=1;i<=x;i++)
                 for (j=1;j<=x;j++)
    		      {
    	           c[i][j]=a[i][j]+b[i][j];
     	          }
    	    for(i=1;i<=x;i++)
    	    {
    		     for (j=1;j<=x;j++)
    		
    			cout<<setw(7)<< c[i][j];
    		
    	        cout<< "\n";
    	    }
    		
    		getch();
    	}

  8. #8
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Code:
    int a[x][y],b[x][y],c[x][y];
    Đoạn này là sai trầm trọng sai cơ bản. Không thể chuyền tham số vào cho mảng được (như Whoru đã viết) bạn xem lại lý thuyết mảng đi.
    In code we trust

  9. #9
    Ngày gia nhập
    05 2007
    Bài viết
    1

    Code:
    Cảm ơn iamvtn  nhé mình tìm thấy chỗ sai rồi:
    Chỗ này nè:
    #include <iostream.h>
    #include <conio.h>
    #include <iomanip.h>
    main()
    {
      int x1;
      cout<<"Hay nhap so hang cua ma tran vuong a:";
      cin >> x1;
     
      int a[x1][x1];int b[x1][x1];int c[x1][x1];
      cout<<"Hay nhap vao cac phan tu cua ma tran a:\n";
      for(int i=1;i<=x1;i++)
      for(int j=1;j<=x1;j++)
      {
         cout<<"a["<<i<<"]["<<j<<"]=";
         cin >> a[i][j];
      }
      cout<<"\nHay nhap vao cac phan tu cua ma tran b:\n";
      for(int i=1;i<=x1;i++)
      for(int j=1;j<=x1;j++)
      {
          cout<<"a["<<i<<"]["<<j<<"]=";
         cin >> a[i][j];
      } 
       
      for(int i=1;i<=x1;i++)
      {
      for(int j=1;j<=x1;j++)
       {
         c[i][j]=0;
              for(int k=1;k<=x1;k++)
              {
              c[i][j] +=a[i][k] * b[k][j];
              }
         }
      }
    for(int i=1;i<=x1;i++)
    {
       for(int j=1;j<=x1;j++)
       {
               cout<<setw(10)<< c[i][j];
               
       }  
       cout<<"\n";
    }
          getch();  
    }
    Note:Mình viết trong môi trường Del C++

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

  1. Trao đổi liên kết, trao doi logo, Text Link với các webforumblog (free)
    Gửi bởi nguyenlam14990 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 31
    Bài viết cuối: 13-03-2012, 11:53 PM

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