2013年9月29日 星期日

C#-陣列相加、相乘


題目:
           陣列相加、相乘(需使用double)。

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double[,] a = { { 1.0, 2.3, 5.1 }, { 4.1, 0.2, 8.7 } }; // 宣告陣列A
            double[,] b = { { 0.1, 1.7, 8.5 }, { 6.1, 3.4, 7.2 } }; // 宣告陣列B
            double[,] d = { { 0.1, 6.1 }, { 1.7, 3.4 }, { 8.5, 7.2 } }; // 宣告陣列C

            matrixAdd(a, b); // 執行陣列相加函式
            Console.WriteLine("      "); // 空一行
            matrixMul(a, d); // 執行陣列相乘函式

            Console.ReadLine(); // 輸入,用來暫停程式
        }

        static void matrixAdd(double[,] a, double[,] b) // 相加函式
        {
            double[,] c = new double[a.GetLength(0), a.GetLength(1)]; // 宣告空陣列C(X向量為3,Y向量為2)
            for (int i = 0; i < a.GetLength(0); i++)
            {
                for (int j = 0; j < a.GetLength(1); j++)
                {
                    c[i, j] = a[i, j] + b[i, j]; // 陣列C=陣列A+陣列B
                    Console.WriteLine("c[" + i + "," + j + "]=" + c[i, j] + " "); // 印出陣列的值
                }
            }

        }

        static void matrixMul(double[,] a, double[,] b) // 相乘函式
        {
            double[,] c = new double[a.GetLength(0), b.GetLength(1)]; // 宣告空陣列C(X向量為2,Y向量為2)
            for (int i = 0; i < a.GetLength(0); i++)
            {
                for (int j = 0; j < a.GetLength(1); j++)
                {
                    c[i, i - i] += a[i, j] * b[j, i - i]; // 陣列C=陣列A與陣列B的內積
                    c[i, i - i + 1] += a[i, j] * b[j, i - i + 1];
                }  
                Console.WriteLine("c[" + i + "," + (i-i) + "]=" + c[i, i-i] + " "); // 印出陣列C[i,i-i]
                Console.WriteLine("c[" + i + "," + (i - i + 1) + "]=" + c[i, i - i + 1] + " "); // 印出陣列C[i,i-i+1]
             }
        }
    }
}

檔案:AddMultiply.cs

1 則留言: