// входящий массив
int Inp_ar[] = {10, 7, 0, 13, 1, 24, 17, 19, 44, 3};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
// Первый скетч, где ардуино почти ни при чем :-)
void loop() {
// put your main code here, to run repeatedly:
// Посчитаем число элементов массива - размер массива на размер
// одного элемента
int A = sizeof(Inp_ar);
int B = sizeof(Inp_ar[0]);
int Num = A/B;
// Распечатаем массив
for (int i=0; i<Num ; i++)
{
Serial.print(String(Inp_ar[i])+" ");
}
// Просто перевод строки
Serial.println("");
// Распечатаем минимальный элемент
Serial.println(String(FMin(Inp_ar,Num)));
//Также максимальный элемент
Serial.println(String(FMax(Inp_ar,Num)));
// Ну и среднее арифметическое
Serial.println(String(FAvg(Inp_ar,Num)));
// Пробел во времени, чтобы не завалить экран результатами
delay(5000);
}
// Функции!!
// Плохо внутри функции считаются размеры переданного массива
// поэтому передадим вторым аргументом
int FMin (int Argum[], int Number)
{
// Первый элемент - в сравнение (для начала с самим собой)
// в цикле
int Result = Argum[0];
for (int i=0; i < Number; i++)
{
if (Result > Argum[i] )
{
Result = Argum[i];
}
}
// Отдадим результат наверх (ну или вбок, как придется )) )
return Result;
}
// Максимальное ловим аналогично минимальному
int FMax (int Argum[], int Number)
{
int Result = Argum[0];
for (int i=0; i < Number; i++)
{
if (Result < Argum[i] )
{
Result = Argum[i];
}
}
return Result;
}
// Среднее арифметическое
float FAvg (int Argum[], int Number)
{
// Засуммируем массив (хорошо бы в int уложиться ))) )
int Sum = 0;
for (int i=0; i < Number; i++)
{
Sum += Argum[i];
}
// Приходится всех к флоату привести, иначе делится нацело почему то
float Result = (float)Sum/(float)Number;
// Ну и результат обратно
return Result;
}