как найти среднее значения в массиве

Тема в разделе "Микроконтроллеры AVR", создана пользователем Yerabdi, 22 фев 2018.

  1. Yerabdi

    Yerabdi Гик

    Код (C++):
     unsigned int ar[20];
    ar[permass]=pereshet;
         permass++;
         if (permass == 20)
         {for (char i=0;i<=19;i++ )
         {  correct2=correct2+ar[i]/20;
           
         }
          permass=0;  }
    резултат совсем другой выходит
     
  2. Yerabdi

    Yerabdi Гик

    переменная pereshet=0.65, 1.45, 0.89, 0.95 3.45, итд
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    В чем проблема-то?
     
  4. Yerabdi

    Yerabdi Гик

    не правильно вычисляет
     
  5. Tomasina

    Tomasina Сушитель лампочек Модератор

    Типы переменных pereshet и correct2 какие?
    В массив ar у тебя кладутся числа 1, 1, 1, 1, 3. вместо 0.65, 1.45, 0.89, 0.95 3.45,
     
  6. Yerabdi

    Yerabdi Гик

    спасибо разобрался, чтобы хранит в массиве 1.45 умножил на 100
     
  7. DetSimen

    DetSimen Guest

    а обьявить
    float ar[20];
    не судьба?
     
  8. Tomasina

    Tomasina Сушитель лампочек Модератор

    память надо экономить ;)
     
  9. DIYMan

    DIYMan Guest

    По условиям задачи все 20 unsigned int прекрасно вмещаются в один unsigned long, поэтому не морщим лоб и делаем просто:
    Код (C++):
    unsigned int ar[20];
    ar[permass] = pereshet;
    permass++;
    unsigned long correct2 = 0;
       
    if (permass == 20)
    {
        correct2 = 0;
        for (char i=0;i<20;i++ )
        {
            correct2 += ar[i];

        }
       
        correct2 /= 20;
       
        permass = 0;
    }
     
  10. Yerabdi

    Yerabdi Гик

    спасибо точно также сделал