Дана последовательность целых чисел удалить все минимальные элементы
Можете помочь с кодом на 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] << " ";