Функция sortArray () ничего не возвращает, т. Е. void
.
Она сортирует переданный массив на месте, поэтому его нужно вызывать так:
sortArray(a, 10); // no return value assignment
Как указали от Бен Фойгт , вы неправильно инициализировали a
, поэтому вам нужно сначала собрать все значения, а затем отсортировать их после l oop.
Вот ваш l oop (после исправления sortArray
после l oop):
for (int i = 0; i < 11; i++) { // 0-10 i.e. 11 iterations
a[i] = analogRead(sensor1); // read values in the array
// ...
}
sortArray(a, 10); // sort after the loop
Другая проблема заключается в том, что ваш l oop Условие равно i < 11
, что означает итерации от 0 до 10, т.е. 11 итераций. Но используемые вами массивы имеют размер 10, то есть от 0 до 9 местоположений, так как массивы C ++ основаны на ZERO. Таким образом, это приводит к выходу за пределы допустимого диапазона, что приводит к неопределенному поведению .
Итак, ваши итерации l oop и размеры массива должны совпадать, т.е. 10 итераций и 10 областей памяти для напишите.
Лучше использовать константу и использовать ее во всех местах, подобных этому:
const int SIZE = 10;
int a[SIZE] = {0}; // initialize if it's not an overhead for arduino
for (int i = 0; i < SIZE; i++) {
a[i] = analogRead(sensor1);
// ...
}
sortArray(a, SIZE);