2010年10月15日 星期五

4*4 矩陣

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        System.Windows.Forms.TextBox[] textbox1;
        System.Windows.Forms.TextBox[] textbox2;
        System.Windows.Forms.TextBox[] textbox3;
        int[,] a = new int[5, 5];
        int[,] b = new int[5, 5];
        int[,] c = new int[5, 5];

        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            textbox1 = new System.Windows.Forms.TextBox[16];
            for (int i = 0; i < 16; i++)
            {
                textbox1[i] = new TextBox();
                this.Controls.Add(textbox1[i]);
                if (i <= 3)
                    textbox1[i].Location = new System.Drawing.Point(10 + i * 100, 10);
                else if (i > 3 && i <= 7)
                    textbox1[i].Location = new System.Drawing.Point(10 + (i - 4) * 100, 40);
                else if (i > 7 && i <= 11)
                    textbox1[i].Location = new System.Drawing.Point(10 + (i - 8) * 100, 70);
                else if (i > 11 && i <= 15)
                    textbox1[i].Location = new System.Drawing.Point(10 + (i - 12) * 100, 100);
            }
            textbox2 = new System.Windows.Forms.TextBox[16];
            for (int i = 0; i < 16; i++)
            {
                textbox2[i] = new TextBox();
                this.Controls.Add(textbox2[i]);
                if (i <= 3)
                    textbox2[i].Location = new System.Drawing.Point(10 + i * 100, 160);
                else if (i > 3 && i <= 7)
                    textbox2[i].Location = new System.Drawing.Point(10 + (i - 4) * 100, 190);
                else if (i > 7 && i <= 11)
                    textbox2[i].Location = new System.Drawing.Point(10 + (i - 8) * 100, 220);
                else if (i > 11 && i <= 15)
                    textbox2[i].Location = new System.Drawing.Point(10 + (i - 12) * 100, 260);
            }
            textbox3 = new System.Windows.Forms.TextBox[16];
            for (int i = 0; i < 16; i++)
            {
                textbox3[i] = new TextBox();
                this.Controls.Add(textbox3[i]);
                if (i <= 3)
                    textbox3[i].Location = new System.Drawing.Point(10 + i * 100, 300);
                else if (i > 3 && i <= 7)
                    textbox3[i].Location = new System.Drawing.Point(10 + (i - 4) * 100, 330);
                else if (i > 7 && i <= 11)
                    textbox3[i].Location = new System.Drawing.Point(10 + (i - 8) * 100, 360);
                else if (i > 11 && i <= 15)
                    textbox3[i].Location = new System.Drawing.Point(10 + (i - 12) * 100, 390);
            }
           
       
        }
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 1; i < 5; i++)
                for (int j = 1; j < 5; j++)
                {
                    for (int k = 1; k < 5; k++)
                    {
                        c[i, j] = c[i, j] + a[i, k] * b[k, j];
                        c[i = 1, j] = c[i = 1, j] + a[1, 1] * b[i, j] + a[1, 2] * b[i + 1, j] + a[1, 3] * b[i + 2, j] + a[1, 4] * b[i + 3, j];
                        c[i = 2, j] = c[i = 2, j] + a[2, 1] * b[i - 1, j] + a[2, 2] * b[i, j] + a[2, 3] * b[i + 1, j] + a[2, 4] * b[i + 2, j];
                        c[i = 3, j] = c[i = 3, j] + a[3, 1] * b[i - 2, j] + a[3, 2] * b[i - 1, j] + a[3, 3] * b[i, j] + a[3, 4] * b[i + 1, j];
                        c[i = 4, j] = c[i = 4, j] + a[4, 1] * b[i - 3, j] + a[4, 2] * b[i - 2, j] + a[4, 3] * b[i - 1, j] + a[4, 4] * b[i, j];
                    }
                }
            //input
            a[1, 1] = Convert.ToInt16(textbox1[0].Text);
            a[1, 2] = Convert.ToInt16(textbox1[1].Text);
            a[1, 3] = Convert.ToInt16(textbox1[2].Text);
            a[1, 4] = Convert.ToInt16(textbox1[3].Text);
            a[2, 1] = Convert.ToInt16(textbox1[4].Text);
            a[2, 2] = Convert.ToInt16(textbox1[5].Text);
            a[2, 3] = Convert.ToInt16(textbox1[6].Text);
            a[2, 4] = Convert.ToInt16(textbox1[7].Text);
            a[3, 1] = Convert.ToInt16(textbox1[8].Text);
            a[3, 2] = Convert.ToInt16(textbox1[9].Text);
            a[3, 3] = Convert.ToInt16(textbox1[10].Text);
            a[3, 4] = Convert.ToInt16(textbox1[11].Text);
            a[4, 1] = Convert.ToInt16(textbox1[12].Text);
            a[4, 2] = Convert.ToInt16(textbox1[13].Text);
            a[4, 3] = Convert.ToInt16(textbox1[14].Text);
            a[4, 4] = Convert.ToInt16(textbox1[15].Text);
            b[1, 1] = Convert.ToInt16(textbox2[0].Text);
            b[1, 2] = Convert.ToInt16(textbox2[1].Text);
            b[1, 3] = Convert.ToInt16(textbox2[2].Text);
            b[1, 4] = Convert.ToInt16(textbox2[3].Text);
            b[2, 1] = Convert.ToInt16(textbox2[4].Text);
            b[2, 2] = Convert.ToInt16(textbox2[5].Text);
            b[2, 3] = Convert.ToInt16(textbox2[6].Text);
            b[2, 4] = Convert.ToInt16(textbox2[7].Text);
            b[3, 1] = Convert.ToInt16(textbox2[8].Text);
            b[3, 2] = Convert.ToInt16(textbox2[9].Text);
            b[3, 3] = Convert.ToInt16(textbox2[10].Text);
            b[3, 4] = Convert.ToInt16(textbox2[11].Text);
            b[4, 1] = Convert.ToInt16(textbox2[12].Text);
            b[4, 2] = Convert.ToInt16(textbox2[13].Text);
            b[4, 3] = Convert.ToInt16(textbox2[14].Text);
            b[4, 4] = Convert.ToInt16(textbox2[15].Text);
          
            for (int i = 1; i < 5; i++)
                for (int j = 1; j < 5; j++)
                {
                    c[i = 1, j] = a[1, 1] * b[i, j] + a[1, 2] * b[i + 1, j] + a[1, 3] * b[i + 2, j] + a[1, 4] * b[i + 3, j];
                    c[i = 2, j] =a[2, 1] * b[i - 1, j] + a[2, 2] * b[i, j] + a[2, 3] * b[i + 1, j] + a[2, 4] * b[i + 2, j];
                    c[i = 3, j] =  a[3, 1] * b[i - 2, j] + a[3, 2] * b[i - 1, j] + a[3, 3] * b[i, j] + a[3, 4] * b[i + 1, j];
                    c[i = 4, j] = a[4, 1] * b[i - 3, j] + a[4, 2] * b[i - 2, j] + a[4, 3] * b[i - 1, j] + a[4, 4] * b[i, j];
                }
            //output
          
           
            for (int i = 0; i < 16; ++i)
                if (i < 4)
                {
                    textbox3[i].Text = Convert.ToString(c[1, i + 1]);
                }
                else if (i >= 4 && i < 8)
                {
                    textbox3[i].Text = Convert.ToString(c[2, (i - 4) + 1]);
                }
                else if (i >= 8 && i < 12)
                {
                    textbox3[i].Text = Convert.ToString(c[3, (i - 4 * 2) + 1]);
                }
                else
                {
                    textbox3[i].Text = Convert.ToString(c[4, (i - 4 * 3) + 1]);
                }

        }
    }
}

沒有留言:

張貼留言