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

Đề tài: [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.

  1. #1
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Wink [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 gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    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);//n =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 gia nhập
    09 2012
    Bài viết
    0

    code mình đăng 1 lần rồi mà bạn

    Code:
            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 += "\r\n\r\n";
                    }
                }
                txtOutput.Text = output;
    
            }
    bạn xem qua xem sao.

  4. #4
    Ngày gia nhập
    11 2011
    Nơi ở
    Viet Nam
    Bài viết
    34

    Trích dẫn Nguyên bản được gửi bởi mr.doan2012 Xem bài viết
    code mình đăng 1 lần rồi mà bạn

    Code:
            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 += "\r\n\r\n";
                    }
                }
                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 gia nhập
    09 2012
    Bài viết
    0

    Trân mạng có công thức nhân 2 ma trận đó bạn..

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

  1. Bài tập C Tích các phần tửcủa ma trận chia hết cho 3
    Gửi bởi bkavlife trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 10-04-2013, 12:38 PM
  2. Xoay ma trận một góc 90 độ ngược chiều kim đồng hồ vối ma trận thường
    Gửi bởi prince7seas trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 11-07-2012, 10:03 PM
  3. Mảng trên C++ Tính TBC các phần tử của M.Trận B từ các số cho trước trong M.trận A
    Gửi bởi ngoc_le_iu_iu trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 13-03-2012, 06:22 AM
  4. Algorithm Chia ma trận thành các ma trận con bằng nhau như thế nào
    Gửi bởi xinbat trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 30-12-2011, 11:14 PM
  5. Bài tập về ma trận | Cộng trừ nhân chia ma trận theo con trỏ?
    Gửi bởi nhocxinh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 12-05-2009, 01:59 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