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 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [Hỏi] Cách nhân 2 ma trận với các phần tử của ma trận đợc để trong mảng 1 chiều.

    Ngày trước học C hay C++ chúng ta thường hay nhập số hàng rồi đến nhập số cột sau đó nhập các phần tử của 2 ma trận và nhân
    VD: Ma trận A: số hàng =2 số cột =2 nhập phần tử a11= 1 a12= 2 a13 = 3 a14 =4 tượng tự nhập Ma trận B sau đó nhân.
    Nhưng nay mình có bài này hơi nan giải là mình nhập 2 ma trận vào trong 2 textbox sau đó đưa chúng ra 1 textbox khác để trong giống 1 ma trận bây giờ muốn nhân 2 ma trận đó thì phải làm sao? nên nhân chúng với phần tử trong textbox kiểu mảng hay phần tử trong textbox hình ma trận, các bạn bày mình cách làm với.
    Hình mô phỏng:

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Sau 1 hồi suy nghĩ mình nghĩ là nên làm theo cách 1 là chuyển các phần tử trong tetxbox ma trận 1 thành 1 ma trận với số hàng và số cột, tương tự với ma trận 2 sau đó chúng ta tiến hành nhân theo kiểu truyền thống như C/C++, tức là VD:
    chuyển ma trận trong textbox là 1,2,3,4 =>ma trận
    1 2
    3 4 tương ứng với a11=1, a12=2, a21=3, a22=4
    chuyển ma trận trong textbox là 2,3,4,5 =>ma trận
    2 3
    4 5 tương ứng với b11=2, b12=3, b21=4, b22=5
    sau đó khởi tạo ma trận c[,] và tiến hành nhân.

    Code ý tưởng:

    private void btnnhan_Click(object sender, EventArgs e)
    {
    string[] aar1 = mt1.Text.Split(',');//bo dau , o textbox mt1 de dk 1 day so
    int n = Int32.Parse(capmt.Text);/ =so hang =so cot
    int [,]a;//mang 2 chieu dai dien cho ma tran 1
    for(int i=0;i<n;i++)
    for(int j=0;j<n;j++)
    {
    a[i,j]= arr1[];//a11 = phan tu dau tien cua text a12 = phan tu thu 2 của text
    }
    string[] arr2 = mt2.Text.Split(',');
    int [,]b;//mang 2 chieu dai dien cho ma tran 2
    for(int k =0;k<n;k++)
    for(int l =0;l<n;l++)
    {
    b[k,l]=arr2[];
    }
    //sau khi da chuyen chung ve dang ma tran vs hang va cot bay gio thi nhan thoi
    int c,d;
    for(c=0;i<donga;i++)
    for(d=0;j<cotb;j++)
    {
    t[c][d]=0;
    for(int h=0;h<cota;h++)
    t[c][d]+=a[c][h]*b[h][d];
    }
    }
    }

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    code mình đăng 1 lần rồi mà bạn

    Mã:
            private void btnShow_Click(object sender, EventArgs e)
            {
                string input = txtInput.Text;
                string output = "";
                string[] arr = input.Split(',');
                int row = (int)Math.Sqrt(arr.Length);
                if ((row * row != arr.Length) || arr.Length < 4)
                {
                    MessageBox.Show("day khong phai la ma tran vuong");
                    return;
                }
                for (int i = 0; i < arr.Length; i++)
                {
                    output += arr[i] + "\t";
                    if (int.Parse(arr[i]) % row == 0)
                    {
                        output += "
    
    ";
                    }
                }
                txtOutput.Text = output;
    
            }
    bạn xem qua xem sao.

  4. #4
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0
    Trích dẫn Gửi bởi mr.doan2012
    code mình đăng 1 lần rồi mà bạn

    Mã:
            private void btnShow_Click(object sender, EventArgs e)
            {
                string input = txtInput.Text;
                string output = "";
                string[] arr = input.Split(',');
                int row = (int)Math.Sqrt(arr.Length);
                if ((row * row != arr.Length) || arr.Length < 4)
                {
                    MessageBox.Show("day khong phai la ma tran vuong");
                    return;
                }
                for (int i = 0; i < arr.Length; i++)
                {
                    output += arr[i] + "\t";
                    if (int.Parse(arr[i]) % row == 0)
                    {
                        output += "
    
    ";
                    }
                }
                txtOutput.Text = output;
    
            }
    bạn xem qua xem sao.
    cái này là chương trình show ra ma trận thôi, còn đây là mình ? nhân, với lại ban đầu mình đã có hàm kiểm tra ma trận vuông rồi ko cần chỗ if kia đâu, mà chỗ đó hôm trước tờ đã bảo là sai rồi còn gì, nhập 1,2,3,4 là đủ thành ma trận 2*2 rồi thế mà if của bạn nó bắt lỗi đấy, mà thôi ở đây mình cần fix chương trình nhân cơ.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trân mạng có công thức nhân 2 ma trận đó bạn..

 

 

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
  •