Usuwanie maksimum z tablicy za pomocą funkcji

0

Witam, mam problem z takim zadaniem: Mam napisać funkcję, która dla tablicy liczb podanej jako parametr (wielkość tablicy także podana jest jako parametr) usunie wszystkie elementy maksymalne. Funkcja powinna zachowywać kolejność liczb.
Nie mam pojęcia, gdzie jest mój błąd w rozumowaniu , dlatego zwracam się do Was o pomoc. :)
Pozdrawiam

#include <iostream>
 
using namespace std;
void usuwanie_maksimow(int tab[], int *rozmiar)
{
	int max = INT_MIN, licznik = 0;
	for (int i = 0; i < *rozmiar; i++)
	{
		if (tab[i] > max) tab[i] = max;
	}
	for (int i = 0; i < *rozmiar-licznik; i++)
	{
		if (tab[i] == max)
		{
			for (int j = i; j < *rozmiar-1 - licznik; j++)
			{
				tab[j] = tab[j + 1];
			}
			licznik++;
			i--;
		}
	}
	*rozmiar -= licznik;
}
 
int main()
{
	int t, n, *tab;
	cin >> t;
	for(int i = 0; i < t; i++)
	{
 
		cin >> n;
		tab = (int*)malloc(n * sizeof(*tab));
		for (int j = 0; j < n; j++)
		{
			cin >> tab[j];
		}
 
		usuwanie_maksimow(tab, &n);
		cout << n;
		for (int j = 0; j < n; j++)
		{
			cout << " " << tab[j];
		}
		free(tab);
	}
	return 0;
} 
2
if (tab[i] > max) tab[i] = max;

max = tab[i]

Piszesz w C++ to nie używaj malloc i free. Albo new[] i delete[] jeśli to było celem ćwiczenia, albo std::vector w normalnym kodzie.

0

Dziękuję bardzo! :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1