Дана последовательность целых чисел удалить все минимальные элементы

Можете помочь с кодом на c++?Не знаю что тут неверно:

int n, min;
cout << "n: ";
cin >> n;
int* a = new int[n];
for (int i = 0; i < n; i++)
{
    cout << "a" << i + 1 << "=";
    cin >> a[i];
    if (!i) min = a[i];
    else if (min < a[i]) min = a[i];
}
for (int i = 0; i < n; i++)
    if (a[i] == min)
    {
        memmove(a + i, a + i + 1, (n - i - 1) * sizeof(int));
        i--;
        n--;
    }
for (int i = 0; i < n; i++)
    cout << a[i] << " ";
cout << endl;
delete[] a;

Ответы (1 шт):

Автор решения: Harry

Вы ищете не минимум, а максимум:

if (min < a[i]) min = a[i];

Подумайте сами - вы сохраняете новый член как минимум, если он больше текущего минимума...

Ну и я бы копировал элементы только по одному разу (на правильность это не влияет), т.е. мой код был бы:

for (int i = 0; i < n; i++)
{
    cout << "a[" << i + 1 << "] = ";
    cin >> a[i];
    if (!i) min = a[i];
    else if (min > a[i]) min = a[i];
}

int m = 0;
for (int i = 0; i < n; i++)
{
    if (a[i] == min) continue;
    a[m++] = a[i];
}

for (int i = 0; i < m; i++)
    cout << a[i] << " ";
→ Ссылка