Что происходит внутри цикла FOR?
1) int max = -9999 - изначальная инициализация переменной (с надеждой что это самое максимально минимальное значение)
2) mas[i] = rand()%105 - 5;- присвоение рандомного значения ячейке с индексомi в массиве mas
3) cout<<mas[i]<<" ";- вывод значения ячейки i из массива mas в консоль
4) if(max < mas[i]){
            max = mas[i];
            pos = i;
        }
- проверка если текущий элемент массива mas больше значения переменной max, то записываем значения ячейки i массива mas в переменную max и сохранение индекса ячейки i в переменной pos.
5) cout<<mas[i]<<" "; - вывод значения i ячейки массива mas.
6) if(i < pos){} - если i меньше индекса позиции максимального элемента
7) if((i % 2 != 0) && (mas[i] % 2 == 0))
            cout<<max<<" ";
                } - если текущий индекс i нечетный (i % 2 != 0) И (&&) элемент массива mas с индексом i имеет четное значение (mas[i] % 2 == 0) , то вывести в консоль максимальное значение ( cout<<max<<" ";)
mas[i] = rand()%105 - 5; // записываем в ячейку массива случайное число диапазоне от 0 до 99
cout<<mas[i]<<" "; // выводим это число на консоль
if(max < mas[i]){   // ищем максимальное значение (max) и его индекс (pos) 
    max = mas[i];
    pos = i;
}cout<<mas[i]<<" ";  // выводим значение текущей ячейки
if(i < pos){        // для всех элементов, предшествующих максимальному
    if((i % 2 != 0) && (mas[i] % 2 == 0))  // если номер нечетный и значение чётное
            cout<<max<<" ";   // выводим значение максимального элемента
}
Я бы такое решение не принял. Вместо вставки в массив оно просто выводит число на консоль.почему int max = -9999Чтобы до прохода по циклу значение текущего максимума (с которым сравнивают числа) было гарантированно меньше любого числа. Тоже говнокод, в таких случаях лучше использовать INT_MIN.