01/10/2018, 15:07
Khai báo cấp phát động cho mảng thì chương trình bị stop, còn khai báo mảng tĩnh chương trình lại chạy được
Nhap vao 2 mang 1 chieu,xoa tren 2 mang nay tat ca cac phan tu trung nhau
#include <stdio.h>
#include <stdlib.h>
void ImportArr(int a[], int n);
void ExportArr(int a[], int b[], int n);
void DelArr(int a[], int &n, int position);
void Funtion(int a[], int b[], int &n);
int main()
{
int n;
printf("Enter elements: ");
scanf("%d", &n);
//int a[12], b[20];
int *a = (int *) malloc(n);
ImportArr(a, n);
int *b = (int *) malloc(n);
ImportArr(b, n);
//ExportArr(a, b, n);
Funtion(a, b, n);
//free(a);
//free(b);
return 0;
}
void ImportArr(int a[], int n)
{
printf("Enter Arr :");
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
}
void ExportArr(int a[], int b[], int n)
{
printf("
Arr A:");
for(int i = 1; i <= n; i++)
{
printf("%4d", a[i]);
}
printf("
Arr B:");
for(int i = 1; i <= n; i++)
{
printf("%4d", b[i]);
}
}
void DelArr(int a[], int &n, int position)
{
for(int k = position + 1; k <= n; k++)
{
a[k - 1] = a[k];
}
}
void Funtion(int a[], int b[], int &n)
{
for(int i = 1; i <= n; i++)
{
for(int j =1; j <=n; j++)
{
if(a[i] == b[j])
{
DelArr(a, n, i);
DelArr(b, n, j);
n--;
}
}
}
printf("
Arr A & B when deleted: ");
ExportArr(a, b, n);
}
Bài liên quan
hóa ra laft do vậy, e tưởng chỉ khai bao số byte là dc
n không phải là số byte đâu.
Bạn phải cấp phát bộ nhớ động cho con trỏ mảng có n phần tử với kích thước mỗi phần tử là 4 bytes (kiểu int)