Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2017, 16:04   #1
Коккс
Пользователь
 
Аватар для Коккс
 
Регистрация: 07.11.2013
Сообщений: 22
По умолчанию Среднее арифметическое Делфи

Добрый день! Подскажите пожалуйста, как посчитать среднее арифметическое в делфи? Имеется 2 одномерных массива.
В первом хранятся полученные результаты в числах, например (45, 25, 36, 55, 38, 60 ) res: array [0..134] of integer; (всего 135 возможных результатов)

Во втором размешанные частоты, например, (1, 8 , 3, 8, 3,1).
chs1: array [0..134] of integer; (всего 135 возможных частот)

То есть каждой частоте соответствует свой результат. Однако каждая частота повторяется N раз, а результат должен быть один. Поэтому необходимо посчитать среднее и его выводить в качестве результата к конкретной частоте. Подскажите, как создать новый массив для средних значений?

Не понимаю, как определять одинаковые частоты в ячейках массива chs1 и считать их среднее

Последний раз редактировалось Коккс; 22.05.2017 в 16:15.
Коккс вне форума Ответить с цитированием
Старый 22.05.2017, 16:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а пример можно?
что дано и что нужно получить в новом массиве?

p.s. не надо писать все 135 значений (достаточно 10-15 значений, чтобы увидеть, что Вы хотите получить).
p.p.s. сортировать массивы можно?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2017, 16:37   #3
Коккс
Пользователь
 
Аватар для Коккс
 
Регистрация: 07.11.2013
Сообщений: 22
По умолчанию

Я же написала выше. Даны массивы с результатами и с частотами. Мне нужно создать один общий массив, где частота будет повторяться только 1 раз и для нее будет среднее арифметическое из результатов для этой частоты(потом будет строиться диаграмма с этим значением для конкретной частоты).

Это тестирование, где пользователь выбирает частоты, на которых будет тестироваться и выбирает количество повторов этих частот. По окончанию тестирования формируется массив результатов. Но выводиться должно одно число для конкретной частоты.

Частоты располагаются в массиве каждый раз по-разному, так как они рандомно перемешиваются

Последний раз редактировалось Коккс; 22.05.2017 в 16:40.
Коккс вне форума Ответить с цитированием
Старый 22.05.2017, 16:40   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Я не понял , это у вас ТвиМС, или что-то с электроникой ?
Что такое частоты ?
Если ТвиМС, то там есть выборка состоящая из вариант ( конкретные значения), и частоты этих значений (сколько раз в выборке варианта).
Или это электроника - частота, фазы, амплитуда ? ..
type_Oleg вне форума Ответить с цитированием
Старый 22.05.2017, 16:41   #5
Коккс
Пользователь
 
Аватар для Коккс
 
Регистрация: 07.11.2013
Сообщений: 22
По умолчанию

Нет, это не их той оперы. Не обращайте внимания на слово частота. Это для глаз прога.
Коккс вне форума Ответить с цитированием
Старый 22.05.2017, 16:56   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Коккс Посмотреть сообщение
Я же написала выше. Даны массивы с результатами и с частотами. Мне нужно создать один общий массив, где частота будет повторяться только 1 раз и для нее будет среднее арифметическое из результатов для этой частоты(потом будет строиться диаграмма с этим значением для конкретной частоты).
алгоритм решения устроит?
или нужно полностью готовый код решения?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2017, 16:59   #7
Коккс
Пользователь
 
Аватар для Коккс
 
Регистрация: 07.11.2013
Сообщений: 22
По умолчанию

Хотелось бы алгоритм работы с пояснениями по коду.
Коккс вне форума Ответить с цитированием
Старый 22.05.2017, 17:00   #8
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Понятно. То есть, если было:
res (45, 25, 36, 55, 38, 60 )
chs1 (1, 8 , 3, 8, 3,1), то ответ должен быть:
(1, 3, 8 ) --> (52.5, 37, 40)
type_Oleg вне форума Ответить с цитированием
Старый 22.05.2017, 17:01   #9
Коккс
Пользователь
 
Аватар для Коккс
 
Регистрация: 07.11.2013
Сообщений: 22
По умолчанию

Именно!
Коккс вне форума Ответить с цитированием
Старый 22.05.2017, 17:10   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Коккс Посмотреть сообщение
Хотелось бы алгоритм работы с пояснениями по коду.
1. сортируйте массив chs1 (и одновременно с ним сортируйте значения)
примерно так:
Код:
  n := 135;
  {сортировка массива chs1 }
  for i:=0 to n-2 do
    for j:=i+1 to n-1 do
      if chs1[i]>chs1[j] then
        begin tmp:=chs1[i]; chs1[i]:=chs1[j]; chs1[j]:=tmp; 
                tmp:=res[i]; res[i]:=res[j]; res[j]:=tmp; 
        end;
2. считаете (за один проход) количество уникальных значений в массиве chs1 (например, nnew)
Код:
nnew := 1;
ch_cur := chs1[0];
for i:=1 to n-1 do 
   if ch_cur <> chs1[i] then begin
     inc(nnew);
     ch_cur := chs1[i];
   end;

3. создаёте результирующий массив из записей (или два массива - в зависимости от того, что Вам нужно на выходе). Размер массива nnew (получен на этапе 2 )
Код:
SetLength(resNew, nnew);
SetLength(chsNew, nnew);
4. устраиваете цикл по массиву chs1 с суммированием значений по одинаковой частоте. как только частота сменилась - сумму делите на количество значений и записывайте в новый массив/ы


пояснения нужны?

Последний раз редактировалось Serge_Bliznykov; 22.05.2017 в 17:15.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти среднее арифметическое и среднее геометрическое элементов массива M(9)? VBA Ramzi Помощь студентам 1 26.06.2016 20:19
Найти среднее арифметическое элементов дерева | Делфи Grishania319 Помощь студентам 0 20.04.2016 09:06
Найти среднее арифметическое их квадратов и среднее арифметическое их модулей. (Турбо паскаль) erte Помощь студентам 1 30.10.2012 13:08
С++ Найти среднее арифметическое положительных и среднее арифметическое отрицательных чисел, минимальное по модулю число. Юрик 530 Помощь студентам 4 03.12.2011 16:26
Делфи.среднее геометрическое элементов массива.среднее арифметическое каждой строки матрицы Karrina Помощь студентам 0 06.12.2010 18:32