You are on page 1of 25

BT_Buổi 03:

Viết giao diện tìm kiếm tuần tự


Code
namespace Giaodientimkiemtuantu
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnBatdautimkiem_Click(object sender, EventArgs e)


{
string[] nums = txtNhapdanhsachcacso.Text.Split(',');

int k = int.Parse(txtNhapsotimkiem.Text);
int pos = -1;

for (int i = 0; i < nums.Length; i++)


{
if (int.Parse(nums[i]) == k)
{
pos = i;
break;
}
}

if (pos >= 0)
{
MessageBox.Show(k + " tìm thấy tại vị trí " + (pos + 1));
}
else
{
MessageBox.Show(" không tìm thấy giá trị" + k);
}
}

private void btnXoa_Click(object sender, EventArgs e)


{
txtNhapdanhsachcacso.Clear();
txtNhapsotimkiem.Clear();
txtNhapdanhsachcacso.Focus();
}

private void label1_Click(object sender, EventArgs e)


{

private void txtNhapdanhsachcacso_TextChanged(object sender, EventArgs e)


{

}
}

1
}

Kết quả

Nhập vào textbox nhập danh sách các số như sau: {3,5,8,23,39,50}

Ta nhập vào textbox Nhập vào số tìm kiếm là tìm số 23

→ Sẽ hiện thị messagebox hiện 23 tìm thấy tại vị trí thứ 4.

Khi nhập vào textbox Nhập vào số tìm kiếm giá trị 10 không nằm trong danh sách các số
ta đã nhập trước đó → Sẽ hiện thị messagebox không tìm thấy giá trị 10.

2
Khi nhấn nút xóa thì sẽ xóa dữ liệu nhập vào textbox và hiển thị con trỏ ở textbox
Nhập dánh sách các số.

3
Bài 1_Chương 2:
Viết phương thức mang.DoiXung( ) như sau:
- mang là một ma trận vuông, mỗi phần tử chứa một số nguyên.
- Phương thức trả về true nếu mang là ma trận đối xứng, ngược lại trả về
false.
Code
namespace bai01_buoi03
{
internal class Program
{
public class Mang
{
private int[,] matrix;

public Mang(int[,] matrix)


{
this.matrix = matrix;
}

public bool DoiXung()


{
int row = matrix.GetLength(0);
int col = matrix.GetLength(1);

// kiểm tra xem ma trận có đối xứng hay không


for (int i = 0; i < row; i++)
{
for (int j = i + 1; j < col; j++)
{
if (matrix[i, j] != matrix[j, i])
{
return false;
}
}
}

return true;
}
}
static void Main(string[] args)
{
// Nhập ma trận từ bàn phím
Console.Write("Nhap so hang cua ma tran: ");
int row = int.Parse(Console.ReadLine());
Console.Write("Nhap so cot cua ma tran: ");
int col = int.Parse(Console.ReadLine());

int[,] matrix = new int[row, col];

Console.WriteLine("Nhap gia tri cho ma tran:");


for (int i = 0; i < row; i++)
{

4
for (int j = 0; j < col; j++)
{
Console.Write("matrix[{0},{1}] = ", i, j);
matrix[i, j] = int.Parse(Console.ReadLine());
}
}

// Kiểm tra xem ma trận có phải là ma trận đối xứng hay không
Mang mang = new Mang(matrix);

if (mang.DoiXung())
{
Console.WriteLine("Ma tran la ma tran doi xung");
}
else
{
Console.WriteLine("Ma tran khong phai là ma tran doi xung");
}
}
}
}

5
Kết quả
Nhập vào ma trận 3x3:
923
452
749
Ta thấy các giá trị nằm hai bên đường chéo chính không đối xứng với nhau.
→ Ma trận không phải ma trận đối xứng.

6
Nhập vào mảng 4x4:
1222
2122
2212
2221
Ta thấy các giá trị trên đường chéo chính đối xứng với nhau.
→ Ma trận là ma trận đối xứng.

7
Bài 02_Chương 2:
Viết phương thức mang.TamGiacTren( ) như sau:
- mang là một ma trận vuông, mỗi phần tử chứa một số nguyên.
- Phương thức trả về true nếu mang là ma trận tam giác trên, ngược lại trả về
false.
Code
namespace Bai02_buoi03
{
internal class Program
{
public class Mang
{
private int[,] mang;

public Mang(int n)
{
mang = new int[n, n];
}

public bool TamGiacTren()


{
for (int i = 0; i < mang.GetLength(0); i++)
{
for (int j = 0; j < i; j++)
{
if (mang[i, j] != 0)
{
return false;
}
}
}
return true;
}

public void Nhap()


{
for (int i = 0; i < mang.GetLength(0); i++)
{
for (int j = 0; j < mang.GetLength(1); j++)
{
Console.Write("Nhap phan tu [{0},{1}]: ", i, j);
mang[i, j] = int.Parse(Console.ReadLine());
}
}
}
}
static void Main(string[] args)
{
Console.Write("Nhap so hang/cot cua ma tran: ");
int n = int.Parse(Console.ReadLine());

8
Mang mang = new Mang(n);
mang.Nhap();

if (mang.TamGiacTren())
{
Console.WriteLine("Mang la ma tran tam giac tren");
}
else
{
Console.WriteLine("Mang khong phai la ma tran tam giac tren");
}

Console.ReadLine();
}
}
}

9
Kết quả
Nhập vào ma trận 3x3:
1 0 -2
0 -1 1
0 10
Ta thấy giá trị nằm phía dưới đường chéo chính không đều bằng 0
→ Mảng vừa nhập không là ma trận tam giác trên.

10
Nhập vào ma trận 4x4:
1345
0537
0043
0000
Ta thấy giá trị nằm phía dưới đường chéo chính đều bằng 0
→ Mảng vừa nhập là ma trận tam giác trên.

11
Bài 03_Chương 3: Viết phương thức mang.TrungHang( ) như sau:
- mang là một ma trận vuông, mỗi phần tử chứa một số nguyên.
- Phương thức trả về true nếu mang có ít nhất hai hàng giống nhau, ngược lại
trả về false.
Code
namespace bai03_buoi03
{
internal class Program
{
static bool TrungHang(int[,] mang)
{
int n = mang.GetLength(0); // lấy số hàng của ma trận
for (int i = 0; i < n - 1; i++)
{
for (int j = i + 1; j < n; j++)
{
bool flag = true;
for (int k = 0; k < n; k++)
{
if (mang[i, k] != mang[j, k])
{
flag = false;
break;
}
}
if (flag) return true;
}
}
return false;
}
static void Main(string[] args)
{
Console.Write("Nhap so hang/cot cua ma tran: ");
int n = int.Parse(Console.ReadLine());

int[,] mang = new int[n, n];


Console.WriteLine("Nhap gia tri cho ma tran:");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write($"mang[{i},{j}] = ");
mang[i, j] = int.Parse(Console.ReadLine());
}
}

if (TrungHang(mang)) Console.WriteLine("Ma tran co it nhat hai hang giong nhau.");


else Console.WriteLine("Ma tran khong co hai hang giong nhau.");
}
}
}

12
Kết quả
Nhập vào ma trận 3x3:
123
567
321
Ta thấy không có hàng nào giống nhau.

13
Nhập vào ma trận 4x4
1246
1246
1246
3579
Ta thấy ma trận có trên có ít nhất hai hàng giống nhau.

14
Bài 08_Chương 3:
Viết phương thức mang.TamGiacDuoi( ) như sau:
- mang là một ma trận vuông, mỗi phần tử chứa một số nguyên.
- Phương thức trả về true nếu mang là ma trận tam giác dưới, ngược lại trả
về false.
Code
namespace bai08_buoi03
{
internal class Program
{
public static bool TamGiacDuoi(int[,] mang)
{
int n = mang.GetLength(0);
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (mang[i, j] != 0)
{
return false;
}
}
}
return true;
}

static void Main(string[] args)


{
Console.Write("Nhap so hang/cot cua ma tran: ");
int n = int.Parse(Console.ReadLine());
int[,] mang = new int[n, n]; // khởi tạo ma trận

// nhập giá trị cho ma trận từ bàn phím


for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
Console.Write($"Nhap gia tri tai vi tri [{i}, {j}]: ");
mang[i, j] = int.Parse(Console.ReadLine());
}
}

// kiểm tra xem ma trận có phải tam giác dưới hay không
if (TamGiacDuoi(mang))
{
Console.WriteLine("Ma tran la tam giac duoi");
}
else
{
Console.WriteLine("Ma tran khong phai tam giac duoi");
}
}

15
}

Kết quả
Nhập vào ma trận 3x3:
000
200
340
Ta thấy giá trị nằm phía trên đường chéo chính đều bằng 0.
→ Mảng vừa nhập là ma trận tam giác dưới.

16
Nhập vào ma trận 4x4:
0000
2050
4501
1000
Ta thấy các giá trị nằm phía trên trên đường chéo chính không đều bằng 0.
→ Ma trận không là ma trận tam giác dưới.

17
Bài 09_Chương 2:
Viết phương thức mang.TrungCot( ) như sau:
- mang là một ma trận vuông, mỗi phần tử chứa một số nguyên.
- Phương thức trả về true nếu mang có ít nhất hai cột giống nhau, ngược lại
trả về false.
Code
namespace bai09_buoi03
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("Nhap so hang/cot cua ma tran: ");
int size = int.Parse(Console.ReadLine());

int[,] arr = new int[size, size];


Console.WriteLine("Nhap gia tri cho mang:");

for (int i = 0; i < size; i++)


{
for (int j = 0; j < size; j++)
{
Console.Write($"[{i},{j}]: ");
arr[i, j] = int.Parse(Console.ReadLine());
}
}

if (TrungCot(arr))
{
Console.WriteLine("Mang co it nhat hai cot giong nhau");
}
else
{
Console.WriteLine("Mang khong co hai cot giong nhau");
}
static bool TrungCot(int[,] arr)
{
for (int i = 0; i < arr.GetLength(1); i++)
{
for (int j = i + 1; j < arr.GetLength(1); j++)
{
bool match = true;
for (int k = 0; k < arr.GetLength(0); k++)
{
if (arr[k, i] != arr[k, j])
{
match = false;
break;
}
}
if (match)
{

18
return true;
}
}
}
return false;
}
}
}
}

19
Kết quả
Nhập vào ma trận 3x3:
146
153
256
Ta thấy không có giá trị của hai cột nào giống nhau.
→ Mảng không có hai cột giống nhau.

20
Nhập vào ma trận 4x4:
1011
4244
2522
3633
Ta thấy có 3 cột có giá trị giống nhau
→ Mảng có ít nhất hai cột giống nhau.

21
Bài 14_Chương 2:
Viết phương thức a.DayConDauTien(b) như sau:
- a, b là hai mảng một chiều, mỗi phần tử chứa một số nguyên.
- Phương thức trả về một mảng c chứa dãy con (bao gồm các số liên tiếp nhau
trong mảng) của lần gặp đầu tiên (đi từ trái qua phải) mà dãy con này đồng
thời có trong mảng a và mảng b.
Code
namespace phuongthucnumber
{
internal class Program
{
static int GetSumOfDivisors(int num)
{
int sum = 0;
for (int i = 1; i <= num / 2; i++)
{
if (num % i == 0)
{
sum += i;
}
}
return sum;
}
static string ClassifyNumber(int num)
{

22
int sum = GetSumOfDivisors(num);
if (sum < num)
{
return "deficient";
}
else if (sum == num)
{
return "perfect";
}
else
{
return "abundant";
}
}
static void Main(string[] args)
{
Console.Write("Nhap so x: ");
int x = int.Parse(Console.ReadLine());
Console.Write("Nhap so y: ");
int y = int.Parse(Console.ReadLine());

Console.WriteLine("Cac so tu {0} den {1} phan loai nhu sau:", x, y);


for (int i = x; i <= y; i++)
{
Console.WriteLine("{0} - {1}", i, ClassifyNumber(i));
}
}
}
}

Kết quả

Nhập vào các phần tử mảng a: {1, 6, 2, 5, 3, 7, 9, 4, 2}

Nhập vào các phần tử mảng b: {9, 6, 2, 5, 3, 7, 8}

Ta thấy các dãy con ở mảng c là 6,2,5,3,7.

23
24
Nhập vào các phần tử mảng a: {2,3,4,5,6,7}

Nhập vào các phần tử mảng b: {1,9,23,10,11}

Ta thấy mảng c không có chứa dãy con của mảng a và b.

25

You might also like