Nhập vào X , xóa phần tử có giá trị gần X nhất.

on Thursday, January 1, 2015
Nhập vào X , xóa phần tử có giá trị gần X nhất.
Ví dụ : 1 2 3 4 5 6
X=3 , mảng sau khi xóa là  1 2 4 5 6


#include < stdio.h>
#include < conio.h>
#include< math.h>
#define MAX 100


void NhapMang(int[], int &);
void XuatMang(int[], int);


void NhapMang(int a[], int &n)
{
for (int i = 0; i < n; i++)
{
printf("\nNhap vao a[%d] = ", i);
scanf("%d", &a[i]);
}
}

void XuatMang(int a[], int n)
{
for (int i = 0; i < n; i++)
{
printf("%4d", a[i]);
}
}

void XoaPTMang(int a[], int &n, int vitri){
for (int i = vitri; i < n; i++){
a[i] = a[i + 1];
}
n--;
}

void XoaPTGanNhat(int a[], int &n, int x){
int delta = abs(x - a[0]),i;
for (int i = 0; i < n; i++){
if (delta>abs(x - a[i]))
delta = abs(x - a[i]);
}
for (int i = n; i >=0; i--){
if (delta == abs(x - a[i]))
XoaPTMang(a,n,i);

}


}


int main()
{
int a[MAX], n, k;

// Nhập vào số lượng phần tử của mảng.
do{
printf("\nNhap vao so luong phan tu cua mang: ");
scanf("%d", &n);

if (n < 0 || n > MAX)
{
printf("\nSo luong phan tu khong hop le. Xin kiem tra lai !");
}
} while (n < 0 || n > MAX);

NhapMang(a, n);
XuatMang(a, n);

printf("Nhap vao k");
scanf("%d", &k);
XoaPTGanNhat(a, n, k);
printf("\n Mang luc sau la \n");
XuatMang(a, n);

getch();
return 0;
}

0 comments:

Post a Comment