return (sym/s); - опять то же самое)) Результат-то будет типа double) Но средним значением чисел {1, 1, 2} будет 1.0

Не созданы функции для отдельного нахождения минимума и максимума.
В функции MaxMin цикл не обязательно гонять два раза. Всё это можно проделать и в одном цикле.
По той же функциями. Инициализация нулями min и max не верна. Например, у Вас будет массив {-1,-2,-3}.
И что, максимальный элемент у него 0? Именно так будет считать такой алгоритм. А индекс будет вообще не инициализирован. Это же замечание касается и min.

a[imax]=a[imin]; - уж написали бы =min ))) Хотя... в принципе ошибки не вижу. Но тогда никакой временной переменной не надо.

cout<<"Srednee zna4enie="<<Sred; - какие ужасы))) Что за Sred? Как же это Вы используете идентификатор функции без параметров.

return 1; - Ваше право, но корректно завершившееся приложение в Windows обычно имеет код возврата 0.