Nhập môn lập trình

Thực hành các bài tập nhập môn lập trình với c# (Phần 3)

Nhập môn lập trình


Danh sách bài tập:


1. Viết hàm tính trung bình cộng các phần tử dương trên ma trận

2. Viết hàm tìm phần tử nhỏ nhất trên cột k

3. Viết hàm tìm phần tử lớn nhất trên dòng k

4. Kiểm tra ma trận có tăng dần từ trái qua phải, từ trên xuống dưới hay không

5. Đếm số lần xuất hiện của phần tử k trong ma trận


Giải bài:


1. Viết hàm tính trung bình cộng các phần tử dương trên ma trận

public static float tinhTBCDuongMaTran(int[,] matran) {

    // Khai báo "kq" là kết quả của hàm
    float kq = 0;

    // Khai báo "count" để đếm số phần tử dương trong ma trận 
    int count = 0;

    // Lặp giá trị từng dòng trong ma trận 
    // matran.GetLength(0) để lấy số dòng trong ma trận
    for (int i = 0; i < matran.GetLength(0); i++){

        // Lặp giá trị từng cột trong ma trận 
        // matran.GetLength(1) để lấy số cột trong ma trận
        for (int j = 0; j < matran.GetLength(1); j++) {
        
            // Kiểm tra phần tử ở dòng i, cột j trong ma trận
            if (matran[i,j] > 0) {

                // Tổng các phần tử dương trong ma trận
                kq += matran[i, j];

                // Số lượng các phần tử dương trong ma trận 
                count++;
            }
        }
    }

    // Tính trung bình cộng các phần tử dương trong ma trận 
    kq = kq / count;

    return kq;
}


2. Viết hàm tìm phần tử nhỏ nhất trên cột k

// Hàm truyền vào ma trận và số cột là K
public static float minKMaTran(int[,] matran, int k){

    // Khai báo "min" bằng giá trị phần tử thứ k của dòng đầu tiên 
    int min = matran[0,k];

    // Lặp giá trị từng dòng trong ma trận 
    // matran.GetLength(0) để lấy số dòng trong ma trận
    for (int i = 0; i < matran.GetLength(0); i++){

        // Lặp giá trị từng cột trong ma trận 
        // matran.GetLength(1) để lấy số cột trong ma trận
        for (int j = 0; j < matran.GetLength(1); j++) {   

            // Kiểm tra số cột bằng k
            // Số nào nhỏ hơn min thì gán bằng min
            if(j == k && min > matran[i,k]) {

                min = matran[i, k];
            }                              
        }
    }

    return min;
}


3. Viết hàm tìm phần tử lớn nhất trên dòng k

// Hàm truyền vào ma trận và số dòng là K
public static float maxKMaTran(int[,] matran, int k) {

    // Khai báo "max" bằng giá trị phần tử đầu tiên của dòng k
    int max = matran[k, 0];

    // Lặp giá trị từng cột trong dòng k của ma trận 
    // matran.GetLength(1) để lấy số cột trong ma trận
    for (int j = 0; j < matran.GetLength(1); j++) {
    
        // Số nào lớn hơn max thì gán bằng max
        if (max < matran[k, j]){

            max = matran[k, j];
        }
    }
    
    return max;
}


4. Kiểm tra ma trận có tăng dần từ trái qua phải, từ trên xuống dưới hay không

public static Boolean checkMaTran(int[,] matran) {

    // Khai báo "check" là biến kiếm tra dạng Boolean giá trị mặc định là True
    Boolean check = true;

    // Lặp giá trị từng dòng trong ma trận 
    // matran.GetLength(0) để lấy số dòng trong ma trận
    for (int i = 0; i < matran.GetLength(0); i++) {

        // Lặp giá trị từng cột trong ma trận 
        // matran.GetLength(1) để lấy số cột trong ma trận
        for (int j = 0; j < matran.GetLength(1); j++) {

            // Chắc chắn rằng vòng for không lặp quá số phần tử trong ma trận 
            if (i + 1 < matran.GetLength(0) && j + 1 < matran.GetLength(1)) {

                // Kiểm tra ma trận có tăng dần từ trái qua phải, từ trên xuống dưới hay không
                if ( (matran[i, j] > matran[i, j + 1]) 
                    || (matran[i, j] > matran[i + 1, j]) ) {

                    check = false;

                    break;
                }
            }
        }
    }

    return check;
}


5. Đếm số lần xuất hiện của phần tử k trong ma trận

public static float demKMaTran(int[,] matran, int k)
{
    // Khai báo "count" để đếm số phần tử k trong ma trận
    // Giá trị mặc định là 0
    int count = 0;

    // Lặp giá trị từng dòng trong ma trận 
    // matran.GetLength(0) để lấy số dòng trong ma trận
    for (int i = 0; i < matran.GetLength(0); i++)
    {

        // Lặp giá trị từng cột trong ma trận 
        // matran.GetLength(1) để lấy số cột trong ma trận
        for (int j = 0; j < matran.GetLength(1); j++)
        {

            // Kiểm tra phần tử dòng i cột j trong ma trận có bằng k không
            // Nếu có tăng biến đếm lên 1
            if (matran[i,j] == k) {

                count++;
            }
        }
    }

    return count;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *