Всем привет нужна помощь по с++ я почти сделала но

Первые два задания я кое как сделала, не получается сжать массив и заполнить нулями
вот задание;
В одномерном массиве, состоящем из п вещественных элементов, вычислить:

  1. Максимальный элемент массива.
  2. Сумму элементов, расположенных до последнего положительного элемента.
  3. Сжать этот массив, удалив из него все элементы, модуль которых находится в интервале [а, b]. Освободившиеся в конце массива элементы заполнить нулями
    вот мой
#include <iostream>
 
using namespace std;
int main()
{
    int i,j, k, a, b;
    const int N=5;
    double mas[N];
    double max;
    double sum;
    // массив
 for (i=0; i<N; i++)
 {
        cout << "mas[" << i << "]= ";
  cin >> mas[i];
  // сразу нахождение посл + элемента  
        if (mas[i] > 0)
            k = i;
 }
 // поиск максимального элемента
    for (int i = 0; i < N; ++i) 
        if (mas[i] > max) 
            max = mas[i];  
             cout << "Максимальный элемент = " << max << endl;
             
// Сумма
    sum = 0;
    for (int i = 0; i < k; i++)
    {
        sum += mas[i];
    }
    cout << "Сумма элементов до последнего положительного элемента: " << sum << endl;
//сжатие массива на инт [a,b]
cout << "Введите значение a "; cin >> a;
cout << "Введите значение b "; cin >> b;

for (; i < N; i++)
{
    if (mas[i] < a || mas[i] > b)
        mas[i - j] = mas[i];
    else
        j++;
}
for (i = N - j; i < N; i++)
    mas[i] = 0;
    
 cout << "сжатый mas:= "<<endl;
 for (i=0; i<N; i++)
 {
  cout << "mas[" << i << "]= " << mas[i] << endl;
 } 

    return 0;
}

У Вас неаккуратное обращение со счетчиками.
Для i,j не установлены значения в начале цикла.