[C++] Bài tập Mảng một chiều – Part 1

18. Viết hàm sắp xếp các phần tử lẻ tăng dần.

void HoanVi(int &x, int &y)
{
	int t=x;
		x=y;
		y=t;
}
void LeTang(int a[], int n)
{
	int i, j;
	for(int i=0; i<n-1; i++)
		if(a[i]%2!=0)
			for(j=i+1; j<n; j++)
				if(a[j]%2!=0 && a[j]<a[i])
					HoanVi(a[j], a[i]);
	XuatMang(a, n);
}

19. Viết hàm sắp xếp các phần tử chẵn giảm dần.

void HoanVi(int &x, int &y)
{
	int t=x;
		x=y;
		y=t;
}
void ChanGiam(int a[], int n)
{
	int i, j;
	for(int i=0; i<n-1; i++)
		if(a[i]%2==0)
			for(j=i+1; j<n; j++)
				if(a[j]%2==0 && a[i]<a[j])
					HoanVi(a[i], a[j]);
	XuatMang(a, n);
}

20. Viết hàm xóa phần tử tại vị trí lẻ trong mảng.

void Xoa_PhanTu_ViTriLe(int a[], int n)
{
	for(int i=1; i<n; i++)
	{
		a[i]=a[i*2];
		n--;
	}
	XuatMang(a, n);
}

Mở rộng:

Xóa phần tử chẵn trong mảng.
void Xoa_PhanTu_ViTriChan(int a[], int n)
{
	for(int i=0; i<n; i++)
	{
		a[i]=a[i*2+1];
		n--;
	}
	XuatMang(a, n);
}

21. Viết hàm xóa phần tử có giá trị lớn nhất trong mảng.

int Max(int a[], int n)
{
	int max=a[0];
	for(int i=1; i<n; i++)
		if(a[i]>max)
			max=a[i];
	return max;
}

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

void Delete_All_Max(int a[], int &n)
{
	int GTMax=Max(a, n);
	for(int i=0; i<n; i++)
		if(a[i]==GTMax)
		{
			Delete_Max(a, n, i);
			i--;
		}
}

 

Share this:

Thích bài này:

Thích

Đang tải…