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 2)

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


Danh sách bài tập:


1. Viết hàm tìm giá trị lớn thứ hai trong mảng một chiều các số nguyên

2. Viết hàm tính trung bình cộng các phần tử lẻ trong mảng

3. Viết hàm tính trung bình cộng các số nguyên tố trong mảng

4. Viết hàm tìm số dương nhỏ nhất trong mảng

5. Viết hàm tìm số nguyên tố nhỏ nhất trong mảng


Giải bài:


1. Viết hàm tìm giá trị lớn thứ hai trong mảng một chiều các số nguyên

Tìm số có giá trị lớn nhất trong mảng, sau đó tìm số lớn nhất trong các số còn lại trong mảng sẽ được số lớn thứ 2 trong mảng.

public static int timMax2(int[] mang) {
    int max = mang[0];
    int max2 = 0;

    foreach(int i in mang) { 
        if(max < i) {
            max = i;
        }
    }

    foreach (int i in mang)
    {
        if (max == i)
        {
            continue;
        } else if (max2 < i){
            max2 = i;
        }
    }

    return max2;
}


2. Viết hàm tính trung bình cộng các phần tử lẻ trong mảng

Dùng vòng lặp foreach lặp qua mỗi giá trị của mảng và kiểm tra số nào là số lẻ rồi tính trung bình cộng của các số đó.
Trung bình cộng của một dãy số là thương số giữa tổng giá trị của tập hợp số đó và số phần tử trong tập hợp đó.

public static float tinhTbcSoLe(int[] mang) {
   
     // Khai bao biến kq là kết quả của phép tính trung bình cộng các số lẻ
     float kq = 0;

     // Khai báo biến count là để đếm số lượng các cố lẻ có trong mảng
     int count = 0;

     // Lặp qua giá trị mỗi phần tử trong mảng
     foreach(int i in mang) { 

         // Kiểm tra i có phải số lẻ hay không (không chia hết cho 2)
         if(i%2 != 0) {
 
             // Tính tổng các số lẻ
             kq += i;
             
             // Đếm số lượng số lẻ
             count++;

         }

     }
     
     // Tính trung bình cộng các số lẻ có trong mảng
     kq = kq / count;

     return kq;
 }


3. Viết hàm tính trung bình cộng các số nguyên tố trong mảng


Tương tự như bài 2, Ta lặp từng phần tử trong mảng với hàm foreach rồi kiểm tra xem các số nguyên tố trong mảng rồi tính trung bình cộng của chúng.
Trung bình cộng của một dãy số là thương số giữa tổng giá trị của tập hợp số đó và số phần tử trong tập hợp đó.
Số nguyên tố là số tự nhiên khác 0 chỉ có hai ước số dương phân biệt là 1 và chính nó.

Để làm bài này mình chia ra 2 hàm, 1 hàm để kiểm tra số nguyên tố trả ra giá trị booleantrue hoặc false, sau đó dùng hàm này vào hàm tính trung bình cộng các số nguyên tố.

// Hàm kiểm tra một số có phải là số nguyên tố hay không 
public static Boolean isSoNguyenTo(int n) {

     if (n < 2) {

         return false;
     }
     
     // kiểm tra trong khoảng từ 2 đến n-1 có số nào chia hết cho n hay không
     // nếu có thì nó không phải là số nguyên tố
     for(int i =2; i<n; i++) { 

         if(n%i == 0) {

             return false;
         }
     }

     return true;
 }
public static float tinhTbcSoNguyenTo(int[] mang) {
     
     // kq là kế quả của phép tính trung bình cộng các số nguyên tố trong mảng
     int kq = 0;
     
     // count là biến đếm số các số nguyên tố có trong mảng
     int count = 0;
     
     // Lặp giá trị từng phần tử có trong mảng
     foreach(int i in mang) {
         
         // Sử dụng hàm kiểm tra số nguyên tố ở trên để kiêm tra giá trị i 
         // của mảng có phải số nguyên tố hay không
         if (isSoNguyenTo(i)) {
             
             // Tăng biến đếm lên 1
             count++;
            
             // Tính tổng các số nguyên tố trong mảng
             kq += i;
         }
     }
    
     // Tính trung bình cộng các số nguyên tố có trong mảng
     kq = kq / count;

     return kq;
 }


4. Viết hàm tìm số dương nhỏ nhất trong mảng

public static int minNguyenDuong(int[] mang) {

     int min = 0;

     foreach(int i in mang) { 

         if (i > 0) {

             min = i;

             break;
         }
     }

     foreach(int i in mang) {

         if  (i > 0 && min > i){

             min = i;
         }
     }

     return min;
 }


5. Viết hàm tìm số nguyên tố nhỏ nhất trong mảng

// Hàm kiểm tra một số có phải là số nguyên tố hay không 
public static Boolean isSoNguyenTo(int n) {

     if (n < 2) {

         return false;
     }
     
     // kiểm tra trong khoảng từ 2 đến n-1 có số nào chia hết cho n hay không
     // nếu có thì nó không phải là số nguyên tố
     for(int i =2; i<n; i++) { 

         if(n%i == 0) {

             return false;
         }
     }

     return true;
 }
// Hàm tìm số nguyên tố nhỏ nhất trong mảng
public static int minNguyenTo(int[] m) {

     int min = 0;

     foreach (int i in m) {
         
         if (isSoNguyenTo(i)) {

             min = i;

             break;
         }
     }

     foreach (int i in m)
     {

         if (isSoNguyenTo(i) && min > i){

             min = i;
         }
     }

     return min;
 }


Bài viết tiếp theo:

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 *