Sắp xếp mảng, loại bỏ tất cả số lớn trong mảng

anh chị giup e với ạ
e có đoạn code C++
E không thể khử đc tất cả số lớn nhất , nó chỉ loại đc vị trí lớn nhất đầu tiên , ac giúp e với ạ

#include<iostream>;
using namespace std;
void nhapmang(int a[],int n);
int main()
{
	int n,max,pos;
	int a[1000];
	cout<<"Nhap N=";
	cin>>n;
	cout<<"Nhap mang A"<<endl;
	nhapmang(a,n);
	max=a[0];
	pos=0;
	for(int i=1;i<n;i++)
	{
		if(max<a[i])
		{
			max=a[i];
			pos=i;
		}
	}
    for(int i = pos; i <n-1; i++)
        {
    a[i] = a[i+1];
    if(i==n-2)
    n--;
       }
   cout<<"Day sau khi xoa so lon nhat ("<<max<<") la:"<<endl;
   for(int i=0;i<n;i++)
   {
   	cout<<a[i]<<" ";
   	}
}
	
void nhapmang(int a[],int n)
{
	for(int i=0;i<n;i++)
	{
      	cout<<"a["<<i<<"]=";
      	cin>>a[i];
    }
}

@lung99nd Bạn tham khảo code này xem

#include <iostream>
using namespace std;

void NhapMang(int arr[], int n)
{
	for (int i = 0; i < n; i++)
	{
		cout << "arr[" << i << "]: ";
		cin >> arr[i];
	}
}

void LoaiPhanTuMax(int arr[], int& n)
{
	int max = 0, loop = 0;
	for (int i = 0; i < n; i++) if (max < arr[i]) max = arr[i];
	for (int i = 0; i < n; i++) if (max == arr[i]) loop++;
	for (int i = 0; i < n; i++)
	{
		if (arr[i] == max)
		{
			for (int j = i; j < n; j++) arr[j] = arr[j + 1];
			i--;
			n -= 1;
		}
	}
}

void InMang(int arr[], int n)
{
	for (int i = 0; i < n; i++) cout << arr[i] << '\t';
}

void main()
{
	int n;
	cout << "Nhap so phan tu: "; cin >> n;
	int* arr = new int[n];
	NhapMang(arr, n);
	cout << "\nMang goc: \n"; InMang(arr, n);
	LoaiPhanTuMax(arr, n);
	cout << "\n\nMang sau khi loai phan tu max: \n"; InMang(arr, n);
	delete[] arr;
}

Ví dụ, a = [1, 2, 3, 3] thì loại bỏ [3, 3] khỏi a.

1 Like

Thường hỏi như này tức là ko cần biết đã sắp xếp hay chưa.

Sau khi bạn lấy max về thì chép đè lên với điều kiện là khác max thôi.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?