Hi, I am

Ngô Tôn

I am a programmer.

Home / Programming / C/C++ / Xóa phần tử có giá trị gần X nhất

Xóa phần tử có giá trị gần X nhất

Yêu cầu:

– Nhập vào giá trị X. Viết hàm xoá phần tử có giá trị gần X nhất.
Ví dụ: cho x = 5 và dãy số: 1 3 -9 0 4 6 7 8. Phần tử gần x = 5 nhất là: 4 và 6. Dãy số sau khi xóa sẽ là: 1 3 -9 0 7 8

Thuật toán:

– Tìm độ lệch nhỏ nhất giữa x và A[i].

– Xóa phần tử bằng cách dồn phần tử.

Code:

/************************************************************
#include <stdio.h>
#include <conio.h>
#include <math.h>

void print_arr(int A[], int n);
void del_apro_x(int A[], int* n, int x);

void main()
{
int A[] = {1, 4, -9, 0, 6, 6, 8, 4};
int n = sizeof(A)/sizeof(int);
printf("\nMang truoc khi xoa ");
print_arr(A, n);
del_apro_x(A, &n, 5);
printf("\nMang sau khi xoa ");
print_arr(A, n);
getch();
}
void del_apro_x(int A[], int* n, int x)
{
int i, j;
int delta = abs(x - A[0]);
//Tim do lech gan nhat cua x va cac phan tu trong mang
for(i = 1; i < *n - 1;i++)
{
if(delta > abs(x - A[i]))
delta = abs(x - A[i]);
}
//Duyet mang tu phan tu cuoi
for(i = *n - 1; i >= 0; i--)
{
if(delta == abs(x - A[i]))
{
for(j = i; j < *n - 1; j++)
{
A[j] = A[j+1];
}
(*n)--;
}
}
}

void print_arr(int A[], int n)
{
int i;
printf("\n=========================");
for(i = 0; i < n; i++)
{
printf("\nA[%d] = %d", i, A[i]);
}
printf("\n=========================");
}

Kết quả:

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Xây dựng hàm bạn để tính diện tích hình chữ nhật

Yêu cầu: Xây dựng hàm bạn để tính diện tích hình chữ nhật Code: Giải …

Leave a Reply

avatar
  Subscribe  
Notify of