#include #include float srednee(int* a, int min, int max) { int sum = 0; for(int i = min; i <= max; i++) sum += a[i]; return sum * 1.0 / (max - min + 1); } int min_i(int* a, int n) { int min = a[0]; //вместо m лучше брать min или max, а вместо s - sum - такой код намного более понятен другому программисту int numb = 0; for(int i = 1; i < n; i++) if(min > a[i]) { min = a[i]; numb = i; } return numb; } int max_i(int* a, int n) { int max = a[0]; int numb = 0; for(int i = 1; i < n; i++) if(max < a[i]) { max = a[i]; numb = i; } return numb; } using namespace std; int main() { int N, *X; /*нельзя создать массив из не константного числа элементов, для этого надо создавать динамический, а для него нужен указатель на начало массива - *X */ cin >> N; X = new int[N]; //создание динамического массива for(int i = 0; i < N; i++) cin >> X[i]; cout << "srednee znachenie vsego massiva: " << srednee(X, 0, N - 1) << endl; int min = min_i(X, N); int max = max_i(X, N); if(min > max) { int temp = min; //для временных переменных, не несущих никакой смысловой нагрузки лучше брать имя - temp (временный) min = max; max = temp; } if(max - min == 0 || max - min == 1) cout << "srednee znachenie korotkogo massiva: " << srednee(X, 0, N - 1) << endl; else {//переменная delta не имеет смысла - применяется 2 раза, да и ее значение не изменятся for(int i = max; i < N; i++) X[i - (max - min) + 1] = X[i]; cout << "srednee znachenie korotkogo massiva: " << srednee(X, 0, N - (max - min)) << endl; } delete []X; //удаление динамического массива, т.к. сам он не удаляется system("pause"); // зачем пауза в if? Она актуальнее в конце программы return 0; // почему он был в if? Это ошибка, т.к. возможны варианты когда не void функция ничего не вернет }