В данном случае ошибка возникает из-за того, что вы используете переменную i как индекс массива, но она объявлена как тип float. Индексами массива могут быть только целые числа, так что вам нужно объявить i как int. В данном случае это можно сделать, заменив строку
Copy code
float sum, k, i;
на
Copy code
float sum, k;
int i;
После этого ошибка должна исчезнуть.
Некоторые дополнительные рекомендации:
В C++ рекомендуется использовать стандартную библиотеку <algorithm> для поиска максимума и минимума в массиве. Это будет более эффективно, чем проходить по всему массиву в цикле и сравнивать каждый элемент с текущим максимумом или минимумом. Например, для поиска минимума можно использовать функцию std::min_element, а для поиска максимума - std::max_element.
Естественно. Индекс не может быть типа float
float sum, k, i; ... sum = sum + arr;
Но в программе еще много чего не так И массив должен быть не из десяти элементов, и суммируются элементы между максимальным и минимальным элементами. а не их значениями.
#include "iostream"
#include "numeric"
#include "ctime"
#include "cstdlib"
#include "algorithm"
using namespace std;
int main(){
int n; cout<<"N: "; cin>>n; float *a=new float[n],s; srand(time(NULL));
for(int i=0;i<n;i++){cout<<(a=rand()%1000/10.)<<'\t'; if(i%10==9)cout<<endl;}
float *i=max_element(a,a+n), *j=min_element(a,a+n); cout<<endl;
if(j>i)swap(i,j); s=accumulate(j+1,i,0.); int m=i-j-1;
cout<<"\nav="<<(m?s/m:0.)<<endl;}
Леди Дарья, выше правильно заметили, что проблема на этапе компиляции - неверный тип переменной для индексируемого типа данных - массива: индекс - целое число, никак не дробное. Также вижу путаницу с индексом и значением минимума и максимума
Могу предложить следующее решение задачи: #include