Tác dụng của biến dem trong kiểm tra phần tử mảng

#include<stdio.h>
#include<stdlib.h>

void nhapMang(int a[], int t)
{
  for(int i=0;i<t;i++)
    scanf("%d",&a[i]);
}
void sosanhMang(int a1[],int a2[],int m, int n)
{
    for(int i=0;i<m;i++)
    {
        int dem=0;
        for(int j=0;j<n;j++)
        {
            if(a1[i]==a2[j])
            {
                dem++;
                break;
            }
        }
    if(dem==1)
    {
        continue;
    }
        printf("%4d ",a1[i]);
    }
}
int main()
{
    int m,n,a1[100],a2[100];
    scanf("%d", &m);
    nhapMang(a1,m);
    scanf("%d",&n);
    nhapMang(a2,n);
    sosanhMang(a1,a2,m,n);
}

mọi người giải thích giúp em việc tạo biến dem ở trong vòng lặp for có tác dụng gì vậy ạ

Biến dem ấy có vai trò là 1 cái cờ, cho cậu biết phần tử đang xét trong dãy S có nằm trong dãy Q hay không.
Biến đó không nên tên là dem, vì thực sự nó chẳng đếm cái gì cả :smile:

Hope it helps!

4 Likes

dạ thế tại sao mình không dùng luôn continue ở chỗ a1[i]==a2[j] mà phải tạo ra 1 biến như thế ạ

Vì cậu thực sự muốn dừng vòng lặp ở trong và tiếp tục vòng lặp ở ngoài :smile:

Diễn giải bằng lời ở code của cậu, khi cậu tìm thấy phần tử đang xét của S trong Q rồi, cậu sẽ dừng việc tìm kiếm lại (vòng lặp ở trong), và tiếp tục tìm kiếm phần tử tiếp theo của S trong Q (continue ở vòng ngoài). Hợp lý chứ? :smile:
Continue ở vòng trong = khi cậu tìm thấy phần tử đang xét của S trong Q, cậu sẽ tiếp tục tìm phần tử đang xét của S trong phần còn lại của Q.

4 Likes

dạ em cảm ơn anh nhiều :grin:

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?