Bài tập thực hành: Đếm số lần xuất hiện của từng phần tử trong mảng - Lập trình C - Code Block - Cách làm 1



BÀI TẬP THỰC HÀNH ĐẾM SỐ LẦN XUẤT HIỆN CỦA TỪNG PHẦN TỬ TRONG MẢNG
YÊU CẦU
·        Nhập một mảng từ bàn phím
·        Cho biết:
o   Từng phần tử của mảng xuất hiện bao nhiêu lần trong mảng.
o   In ra danh sách gồm 2 cột: Giá trị phần tử và số lần xuất hiện


Khai báo sử dụng thư viện

#include <conio.h>
#include <stdio.h>

Khai báo một mảng các phần tử kiểu int với số lượng là 10 phần tử.

int ds[10];
int n; 

Nhập vào số lượng phần tử của mảng

//Hien thong bao moi nguoi dung nhap
    printf("Nhap so luong phan tu:");
//Nhap vao tu ban phim
    scanf("%d",&n);

Nhập mảng từ bàn phím

for(int i = 0;i<10; i++)
       {
            printf("Nhap ds [%d]:",i);
            scanf("%d",&ds[i]);
       }

Hiện mảng đã nhập

printf("Danh sach da nhap la:");
    for (int i = n-1;i>=0;i--)
    {
        printf("ds[%d]=%d\n",i,ds[i]);
    }

Khai báo một biến để lưu trữ số lần xuất hiện của từng phần tử

int soluong = 0;

 

Thực hiện Tìm kiếm trên danh sách

Lần lượt duyệt qua từng phần tử trong mảng đã cho, với mỗi phần tử đó sẽ thực hiện:
+ Khởi tạo 1 biến đếm cho bằng 0
+ Chạy từ đầu đến cuối mảng đã cho để kiểm tra:
+ Nếu gặp phần tử nào bằng thì biến đếm tăng lên 1.
+ In ra phần tử + số lần sau đó xuống dòng
Code như sau:
for (int i = 0;i<n;i++)
    {
        soluong = 0;
        for (int j = 0; j<n; j++)
        {
            if (ds[i] == ds[j])
            {
                soluong = soluong+1;
            }
        }
        //In ra
        printf("Gia tri [%d] xuat hien [%d] lan\n",ds[i], soluong);    }

Tổng hợp Code


#include <stdio.h>
#include <conio.h>
int main()
{
    int ds[10];
    //Hien thong bao moi nguoi dung nhap
    printf("Nhap so luong phan tu:");
    //Nhap vao tu ban phim
    scanf("%d",&n);
    //In n ra
    printf("n=%d\n",n);
    //Nhap cac phan tu trong mang
    for (int i = 0; i<n; i++)
    {
        //In ra loi huong dan nhap phan tu thu may
        printf("Nhap phan tu thu [%d]:",i+1);
        scanf("%d",&ds[i]);
    }
    //In ra danh sach
    printf("Danh sach da nhap la:");
    for (int i = n-1;i>=0;i--)
    {
        printf("ds[%d]=%d\n",i,ds[i]);
    }

    printf("In danh sach phan tu trong mang:\n");
    int soluong = 0;
    for (int i = 0;i<n;i++)
    {
        soluong = 0;
        for (int j = 0; j<n; j++)
        {
            if (ds[i] == ds[j])
            {
                soluong = soluong+1;
            }
        }
        //In ra
        printf("Gia tri [%d] xuat hien [%d] lan\n",ds[i], soluong);
    }
    getch();
}


Giao diện kết quả


Phân tích kết quả:


Kết quả in ra đúng yêu cầu.
Tuy nhiên, Kết quả có sự lặp lại của việc thông báo. Ví dụ số 4 thông báo 3 lần
Cách sửa như thế nào?

No comments:

Powered by Blogger.