Как поменять местами минимальный и последний нулевой элементы массива А?

Как найти последний нулевой элемент и поменять местами с минимальным?

Записал массив и нахождение минимального элемента:

#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 // После

Проверку не добавлял, но её обязателно надо сделать, а именно:

  • проверить, не является ли массив пустым
  • есть ли среди элементов массива нулевой, в принципе
→ Ссылка