Как поменять местами минимальный и последний нулевой элементы массива А?
Как найти последний нулевой элемент и поменять местами с минимальным?
Записал массив и нахождение минимального элемента:
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
setlocale(0, "");
srand(time(NULL));
int N;
cout << "Введите размер массива:" << endl;
cout << "N = ";
cin >> N;
double* A = new double[N];
cout << "Введите массив:" << endl;
for (int i = 0; i < N; i++)
{
cin >> A[i];
}
cout << "Массив до преобразования: " << endl;
for (int i = 0; i < N; i++)
{
cout << "["<< i + 1 << "]: " << A[i] << endl;
}
cout << "Массив после преобразования: " << endl;
int Min = A[0];
for (int i = 0; i < N; i++)
{
if (A[i] < Min)
{
Min = A[i];
}
}
cout << Min << endl;
system("pause > void");
return 0;
}
Ответы (2 шт):
Автор решения: Ildar
→ Ссылка
нахождение индекса последнего нулевого элемента
const int size = 10;
int array[size] = { 0,1,2,3,4,0,5,7,0,8 };
int index = 0;
for (int i = 0;i < size;++i) {
if (array[i] == 0) {
index = i;
}
}
Автор решения: isnullxbh
→ Ссылка
Код:
int sym[] = { 0 };
int arr[] = { 1, 0, 2, -1, 0, 3, 0, 7, 1 };
std::iter_swap(
std::min_element(arr, arr + std::size(arr)),
std::find_end(arr, arr + std::size(arr), sym, sym + 1));
Вывод:
1 0 2 -1 0 3 0 7 1 // До
1 0 2 0 0 3 -1 7 1 // После
Проверку не добавлял, но её обязателно надо сделать, а именно:
- проверить, не является ли массив пустым
- есть ли среди элементов массива нулевой, в принципе