Mục lục chương I: ĐỐi tưỢng và LỚP


Kiểu dữ liệu mảng, các phương thức có giá trị trả về , constructor sao chép



tải về 1.36 Mb.
trang9/28
Chuyển đổi dữ liệu21.12.2018
Kích1.36 Mb.
1   ...   5   6   7   8   9   10   11   12   ...   28

Kiểu dữ liệu mảng, các phương thức có giá trị trả về , constructor sao chép


Xây dựng lớp Matrix cho các ma trận các phương thức nhập ma trận từ bàn phím, hiện ma trận ra màn hình, cộng hai ma trận, trừ hai ma trận, nhân hai ma trận.

a, Hướng dẫn:

Ma trận được lưu trữ các phần tử trong mảng hai chiều nên phải khai báo một mảng int[,] để lưu trữ các thành phần đó.

Các phương thức thao tác với ma trận:

- Phương thức nhập: sẽ tiến hành nhập các phần tử của ma trận theo từng hàng


  • Phương thức hiện ma trận lên màn hình

  • Phương thức chuyển vị hai ma trận có giá trị trả về là một ma trận. Ở đây chỉ là việc đổi vị trí: cv.m[i,j]=this.m[j,i]

  • Phương thức tong(matran b) làm công việc cộng hai ma trận:

tmp.m[i, j] = this.m[i, j] + b.m[i, j]

  • Phương thức tich(int k:): tính tích của ma trận với một số

- Phương thức tich(matran b): tính tích của hai ma trận (đây là phương thức chồng với phương thức tich của ma trận với một số)

  • Phương thức hieu(matran b): tính hiệu của hai ma trận

Để tính đựợc tổng, hiệu, tích của hai ma trận thì chúng phải tương thích nhau về điều kiện cụ thể hai ma trận cùng có số hàng và số cột thì mới cộng, trừ được, ma trận này phải có số cột bằng số hàng của ma trận kia thi mới thực hiện được phép nhân hai ma trận. Trong những trường hợp khác thì sinh lỗi. Vì vậy cần có công việc kiểm tra điều kiện tương thích. Và các phương thức này đều trả ra giá trị là một đối tượng lớp ma trận

b, Bài giải mẫu:




using System;

namespace matran

{

class Matrix

{

int i, j;

int[,] m;// mảmg để lưu trữ phần tử của ma trận

public Matrix()

{

m = new int[10, 20];



}

public Matrix(int h, int c)

{

m = new int[h, c];



}

public void nhap()

{

int i, j;



for (i = 0; i < m.GetLength(0); i++)

{

Console.WriteLine("Nhap cac phan tu cho hang thu {0} :", i + 1);



for (j = 0; j < m.GetLength(1); j++)

{

Console.Write("m[{0},{1}]= ", i, j);



m[i, j] = Convert.ToInt32(Console.ReadLine());

}

}



}

public void hien()

{

for (i = 0; i < m.GetLength(0); i++)

{

for (j = 0; j < m.GetLength(1); j++)

Console.Write("\t {0}", m[i, j]);

Console.WriteLine();

}




}

public Matrix chuyenvi()

{

Matrix cv = new Matrix(this.m.GetLength(0), this.m.GetLength(1));



for (i=0;i< this.m.GetLength(0);i++)

{

for (j=0;j<this.m.GetLength(1);j++)

cv.m[i,j]=this.m[j,i];

}

return cv;

}

public Matrix tong(Matrix b)

{

Matrix tmp = new Matrix(this.m.GetLength(0), this.m.GetLength(1));



for (i = 0; i < this.m.GetLength(0); i++)

{

for (j = 0; j < this.m.GetLength(1); j++)

tmp.m[i, j] = this.m[i, j] + b.m[i, j];

}

return tmp;

}

public Matrix hieu(Matrix b)

{

Matrix tmp = new Matrix(this.m.GetLength(0), this.m.GetLength(1));



for (i = 0; i < this.m.GetLength(0); i++)

{

for (j = 0; j < this.m.GetLength(1); j++)

tmp.m[i, j] = this.m[i, j] - b.m[i, j];

}

return tmp;

}

public Matrix chuyenvi( Matrix b)

{

Matrix tmp = new Matrix(this.m.GetLength(1), this.m.GetLength(0));



for (i=0;i
for (j=0;j

{

tmp.m[i,j]=this.m[j,i];



}

return tmp;

}

public Matrix tich(Matrix b)






{

Matrix tmp = new Matrix(this.m.GetLength(0), b.m.GetLength(1));



for (i = 0; i < this.m.GetLength(1); i++)

for (j = 0; j < b.m.GetLength(0); j++)

{

tmp.m[i, j] = 0;



for (int k = 0; k < tmp.m.GetLength(1); k++)

tmp.m[i, j] = tmp.m[i, j] + this.m[j, k] * b.m[k, j];

}

return tmp;

}

public bool tuongthichcongtru(Matrix b)

{

return (this.m.GetLength(0) == b.m.GetLength(1));

}

public bool tuongthichnhan(Matrix b)

{

return (this.m.GetLength(1) == b.m.GetLength(0));

}

class tester

{

static void Main(string[] args)

{

Matrix a = new Matrix(2, 2);



Matrix b = new Matrix(2, 3);

a.nhap();

Console.WriteLine("ma tran ma a la:");

a.hien();

Console.WriteLine("ma tran chuyen vi cua a:");

a=a.chuyenvi(a);

a.hien();

b.nhap();

Console.WriteLine("ma tran b:");

b.hien();

Console.WriteLine("tich ma tran chuyen vi cua a voi b la:");

{

if (a.tuongthichnhan(b) == true)

{

a=a.tich(b);



a.hien();

}

else






Console.WriteLine("hai ma tran khong tuong thich hang va cot");

}

Console.ReadKey();



}

}

}



}

K


nhap ma tran a:

m[0,0]=1


m[0,1]=2

m[1,0]=3


m[1,1]=1

ma tran a:



  1. 2

  2. 1

nhap ma tran b:

m[0,0]=0


m[0,1]=1

m[0,2]=3


m[1,0]=5

m[1,1]=2


m[1,2]=3

ma tran b la:



  1. 1 3

5 2 3

tich cua ma tran a va b la:

10 5 9

5 5 12


ma tran chuyen vi cua a la;

  1. 5

  1. 5

9 12

ết quả sau khi chạy chương trình:




    1. Поделитесь с Вашими друзьями:
1   ...   5   6   7   8   9   10   11   12   ...   28


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©tieuluan.info 2019
được sử dụng cho việc quản lý

    Quê hương