30/09/2018, 18:53
Anh nào chỉ em đọan này của bài tập C cái ạ
> #include<stdio.h>
> #include<conio.h>
> // Nhap 2 mang xoa di cac ptu trung nhau giua 2 mang
> int i,j,x=0,n2,n;
> void nhap(int a1[], int n){
> for(i=0;i<n;i++){
> printf("a[%d]= ",i); scanf("%d", &a1[i]);
> }
> }
> void xuat(int a1[], int n){
> for(i=0;i<n;i++){
> printf("%d ",a1[i]);
> }
> }
> void xoa(int a1[],int vitri, int n){
> // vitri-=1;
> while(vitri<n){
> a1[vitri]=a1[vitri+1];
> vitri++;
> }
> }
> void trung(int a1[], int a2[],int c[]){
> // int x=0; Sai dong nay
> for(i=0;i<n;i++){
> for(j=0;j<n;j++){
> if(a1[i]==a2[j]){
> c[x]=a1[i];
> x++;
> }
> }
> }
> }
> void xoatrung(int a1[],int c[]){
> i=0;
> while(i<n){
> for(j=0;j<x;j++){
> if(a1[i]==c[j]){
> xoa(a1,i,n);
> n--;
> i--;
> }
> }
> i++;
> }
> xuat(a1,n);
> }
> int main(){
> int a1[100], a2[100],c[100];
> printf("n= "); scanf("%d", &n);
> n2=n;
> printf("Nhap mang 1:
");
> nhap(a1,n);
> printf("Nhap mang 2:
");
> nhap(a2,n);
> trung(a1,a2,c);
> printf("Mang 1:
");
> xoatrung(a1,c);
> n=n2;
> printf("Mang 2:
");
> xoatrung(a2,c);
>
> }
Bài liên quan
Tại sao trong hàm main lại gán n2=n; sau đó lại cho n=n2 để làm gì ạ. e ngu quá mới học nên k biết ạ
Trả lời câu hỏi của em, vì khi em gọi xóa trùng thì có dòng n–, do n là biến toàn cục nên nó sẽ bị giảm đi, giờ muốn gọi lại thì nó phải lấy giá trị ban đầu là n2 = n ( n2 = n lúc đầu, sau đó n thay đổi do gọi hàm xoatrung(), sau đó gán lại n = n2 thì n lại có giá trị ban đầu
OH em hiểu rồi . thế mà k nghĩ ra gà thậc . thank you anh ạ