Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 1
Регистрация: 10.03.2011
Сообщений: 99

Вложенные циклы и как в них не заблудиться

12.03.2018, 15:51. Показов 1336. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер.
Ребята, спасайте, оказывается можно заблудиться в трех соснах.
Третий день не могу реализовать казалось бы простой алгоритм с множеством вложенных циклом.

Задача в принципе не сложная – рекурсия, но очень легко запутаться в циклах.
Собственно это и произошло. Требуется помощь.
Суть задачи в следующем:
Есть некоторые измерения температуры за определенный интервал времени – допустим метеостанция, которая измеряет внешнюю температуру с заданной периодичностью (может быть разным – как секундные измерения, так и на каждую 1 и 20 секунду, так и каждую 2 секунду, в общем как захотим, так и настроим).
Нужно разбить этот интервал на равные отрезки, скажем, по 10 минут.
Далее разбить каждую 10-минутку на 20-ти секундные интервалы (то есть в одном 20-ти секундном интервале может быть 20 значений, а может и 2), на которых определить среднее арифметическое с нарастающей.
Что значит с нарастающей… Для первых 20-ти секунд вычисляем среднее арифметическое. Вторые 20 секунд – берется среднее арифметическое первых 20 секунд, складывается со средним вторых 20 секунд и делится на количество измерений на двух интервалах (если ежесекундные измерения, то на 20+1). Аналогичный алгоритм на третьем интервале, причем количество измерений уже будет за 3 интервала. Так до конца массива измерений.
На следующих 15 минутах снова все сначала.
Получилось пока только рассчитать среднее на 20 секундах.
Дальше никак, запутываюсь.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
std::vector<data_t> interval_data; // интервал измерений из потока
std::vector<double> temper; // измерения из потока
double timeMin = Chart->BottomAxis->Minimum; //для графика
double timeMax = Chart->BottomAxis->Maximum; //для графика
double interval = edCalcTemperRecurInterval->Time;  //20 секунд  - с формы
//double interval_del = edCalcTemperIntervalMin->Time; //20 секунд – с формы
double interval_stop = -1; //окончание интервала
for (unsigned int i = 0; i < data.size(); i++) //прогоняю все измерения
{
    const data_t & d = data[i];
    if ( d.time >= timeMin && d.time <= timeMax  )
    {
        if ( interval_stop < 0 )
        {
            interval_stop = d.time + interval; // определяю первый интервал
        }
        if ( d.time <= interval_stop )
        {
            interval_data.push_back( d );
        }
        else {
            if ( !interval_data.empty() )
            {
                double temp;
                unsigned int n = interval_data.size();
                for (unsigned int j = 0; j < n; ++j)
                {
                temp+= interval_data[j].value; // суммирую значения на интервале
                                    }
                temp /= (double)n; // нахожу среднее
           // Рисование графика
                for (unsigned int j = 0; j < n; ++j)
                {
                    seriesTemper->AddXY( interval_data[j].time, mean );
                    seriesTemper->Active = seriesTemper->Count() > 0;
                    seriesTemper->ShowInLegend = seriesTemper->Count() > 0;
                    temper.push_back( mean );
                    interval_data.clear();
                }
  //Переход к следующему интервалу
                interval_stop = d.time + interval;
            }
            }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.03.2018, 15:51
Ответы с готовыми решениями:

Циклы с условием, циклы с переменной, вложенные циклы
С условием 1. Ввести натуральное число N и вычислить сумму всех чисел фибоначчи меньших N. Предусмотреть защиту от ввода...

Как делать вложенные циклы for?
def Lagrange (x,y,p): for i,Y in enumerate(y): for j,X in enumerate(x): if j==i: continue else: P1*=p-X ...

Как правильно построить вложенные циклы?
Будьте добры, помогите выпутаться из трех сосен, а то у меня уже вывих мозга! Нарисовал вот такое: Private Sub...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2018, 15:51
Помогаю со студенческими работами здесь

Кто как оформляет вложенные циклы
Какой из вариантов вы используете? 1) for (int i = height - 2; i &gt;= 0; i--) { for (int j = 0;...

В программе с ЧПУ есть циклы, причём и вложенные. Как их можно разложить?
Есть переменная типа QStringList в которой хранится программа от ЧПУ для удобства я её переписываю во 2-ую переменную типа QStringList по...

Вложенные друг в друга контроллы: как обратиться к одному из них
Помогите решить нехитрую задачку: есть gridview1, в нем еще один gridview2, а в gridview2 - dropdownlist1. Как добраться до...

Где можно найти информацию и различные примеры про то, как устроены вложенные циклы (for/repeat...untile/while)?
Доброго времени суток.Не можете подсказать,где можно найти информацию и различные примеры про то,как устроены вложенные...

Как работают вложенные циклы в "методе пузырька"
Всем доброго времени суток ! Я только недавно начала изучать C# и вот столкнулся с непониманием работы вложенных циклов при сортировки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru