#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
// them vao phan tu trong mang dong
//khai bao thu vien prototype
void NhapMang();
void Xuatmang();
void Them();
void Xoa();
//ham con
void NhapMang(int *A,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\n Mang A[%d] = ",i);
scanf("%d",&A[i]);
}
}
void Xuatmang(int *A,int n)
{
int i;
for(i=0;i<n;i++)
{
printf(" %d ",A[i]);
}
}
// ham them phan tu
void Them(int *A,int &n,int VtriThem,int PhanTuThem)
{
int i;
realloc(A,(n+1)*sizeof(int *));//gia tang bo nho them 1 o
for(i=n;i>=VtriThem+1;i--)
{
A[i]=A[i-1];
}
A[VtriThem]=PhanTuThem;
n++;
}
//xoa phan tu
void Xoa(int *A,int &n,int VtriXoa,int PhanTuXoa)
{
int i;
for(i=VtriXoa;i<n-1;i++)
{
A[i]=A[i+1];
}
A[VtriXoa]=PhanTuXoa;
n--;
realloc(A,n*sizeof(int *));
}
//ham nhap mang
int main()
{ int n,*A=(int *)malloc(sizeof (int *));
do{
printf("\n ban nhap so nguyen n ");
scanf("%d",&n);
if(n<0)
{
printf("\n ban nhap sai.xin kiem tra lai ");
}
}while(n<0);
NhapMang(A,n);
Xuatmang(A,n);
int VtriThem,VtriXoa,PhanTuThem,PhanTuXoa;
// nhap vi tri them
do{
printf("\n ban hay nhap vi tri can them %d------>%d = ",0,n);
scanf("%d",&VtriThem);
if(VtriThem<0||VtriThem>n)
{
printf("\n ban nhap sai.xin kiem tra lai ");
}
}while(VtriThem<0||VtriThem>n);
//phan tu can them
printf("\n ban hay nhap phan tu can them %d------>%d",0,n);
scanf("%d",&PhanTuThem);
// ket qua
Them(A,n,VtriThem,PhanTuThem);
Xuatmang(A,n);
//nhap vitri can xoa
do{
printf("\n ban hay nhap vi tri can xoaa %d------>%d",0,n);
scanf("%d",&VtriXoa);
if(VtriXoa<0||VtriXoa>n)
printf("\n ban nhap sai.xin kiem tra lai ");
}while(VtriXoa<0||VtriXoa>n);
// nhap phan tu can xoa
printf("\n ban hay nhap phan tu can xoa %d------>%d",0,n);
scanf("%d",&PhanTuXoa);
// ket qua
Xoa(A,n,VtriXoa,PhanTuXoa);
Xuatmang(A,n);
free(A);
}
indent preformatted text by 4 spaces
#include<stdio.h>
#include<stdlib.h>
//#include<conio.h>
// them vao phan tu trong mang dong
//khai bao thu vien prototype
void NhapMang();
void Xuatmang();
void Them();
void Xoa();
//ham con
void NhapMang(int *A,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("\n Mang A[%d] = ",i);
scanf("%d",&A[i]);
}
}
void Xuatmang(int *A,int n)
{
int i;
for(i=0;i<n;i++)
{
printf(" %d ",A[i]);
}
}
// ham them phan tu
void Them(int *A,int *n,int VtriThem,int PhanTuThem)
{
int i;
realloc(A,(*n+1)*sizeof(int *));//gia tang bo nho them 1 o
for(i=*n;i>=VtriThem+1;i--)
{
A[i]=A[i-1];
}
A[VtriThem]=PhanTuThem;
*(n)++;
}
//xoa phan tu
void Xoa(int *A,int *n,int VtriXoa,int PhanTuXoa)
{
int i;
for(i=VtriXoa;i<*n-1;i++)
{
A[i]=A[i+1];
}
A[VtriXoa]=PhanTuXoa;
*n--;
realloc(A,*n *sizeof(int *));
}
//ham nhap mang
int main()
{ int n,*A=(int *)malloc(sizeof (int *));
do{
printf("\n ban nhap so nguyen n ");
scanf("%d",&n);
if(n<0)
{
printf("\n ban nhap sai.xin kiem tra lai ");
}
}while(n<0);
NhapMang(A,n);
Xuatmang(A,n);
int VtriThem,VtriXoa,PhanTuThem,PhanTuXoa;
// nhap vi tri them
do{
printf("\n ban hay nhap vi tri can them %d------>%d = ",0,n);
scanf("%d",&VtriThem);
if(VtriThem<0||VtriThem>n)
{
printf("\n ban nhap sai.xin kiem tra lai ");
}
}while(VtriThem<0||VtriThem>n);
//phan tu can them
printf("\n ban hay nhap phan tu can them %d------>%d",0,n);
scanf("%d",&PhanTuThem);
// ket qua
Them(A,&n,VtriThem,PhanTuThem);
Xuatmang(A,n);
//nhap vitri can xoa
do{
printf("\n ban hay nhap vi tri can xoaa %d------>%d",0,n);
scanf("%d",&VtriXoa);
if(VtriXoa<0||VtriXoa>n)
printf("\n ban nhap sai.xin kiem tra lai ");
}while(VtriXoa<0||VtriXoa>n);
// nhap phan tu can xoa
printf("\n ban hay nhap phan tu can xoa %d------>%d",0,n);
scanf("%d",&PhanTuXoa);
// ket qua
Xoa(A,&n,VtriXoa,PhanTuXoa);
Xuatmang(A,n);
free(A);
}
Bạn xóa phần tử xong, realloc thì phần tử mất hết, lấy gì để in ra nữa?
Theo anh @ltd đồn thì C ko có khái niệm tham chiếu, nếu muốn thì chỉ truyền tham trỏ thôi (con trỏ)
?? Cái này là sao ? bạn bị lỗi á ?
k chạy dc .vì C k chạy .có tham chiếu &n\
Thử sửa lại như thế xem có được không? Lâu rồi không làm không nhớ rõ có đúng không.
Sửa lại như thế thì trong hàm Them, những chổ có n thay thành *n.
có vẻ chưa ổn cho lắm
vẫn k chạy được
Bạn không post lỗi lên mình cũng không biết bạn bị lỗi gì. Mình nhát lắm, ko bật IDE lên test đâu.
mình đã test và chạy được, thấy cũng ổn mà mình dùng DevC++ 5.8.3, cơ mà mình thấy bạn hình như bạn dư cái này.
nếu đã có vị trí cần xóa rồi thì đâu cần nhập phần tử cần xóa làm gì
cảm ơn bạn đã góp ý .devc cua minh k chay dc
làm luôn tấm scr shot
Đặt đuôi file là cpp => C++ => biên dịch không lỗi.
oh hj cảm ơn người .k cần tham chiếu bài này vẫn đc mà
mark .c chạy chương trình của t à
Bạn xóa phần tử xong, realloc thì phần tử mất hết, lấy gì để in ra nữa?
oh thế hả .t tưởng chỉ xóa 1 phần tử thui