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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 20:26   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 927
Печаль Найти среднее и максимальное из множества

Уважаемые формучане, помогите пожалуйста кодом. Получаю из Edit'ов значения, присваиваю их y1..y24 соответственно.
Код:
y1:= StrToFloat(Edit1.Text);
...
y24:= StrToFloat(Edit24.Text);
За тем по условию:
Код:
Case ComBoBox1.ItemIndex of
0:
 {найти среднее арифметическое как сумм(y1:y24)/24 , но ыот тут проблема, если какой то yn = 0, то тогда делить нужно на число y-ов, не равных нулю! }
1:
{Найти максимальное значение из всей выборки [y1..y24] и присвоить назначение переменной ymax }
Помогите, зашиваюсь уже долгое время!
kta87 вне форума Ответить с цитированием
Старый 25.10.2011, 22:40   #2
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 927
По умолчанию

Все разобрался и сделал! Для тех кому нужно в будущем выкладываю :
Код:
var
a:array of real;
ycr: real;
changed:boolean;
begin
  SetLength(a,24);
  For i:=0 to 24 do
  begin
   if (Form1.Components[i] is TEdit) then
   Begin
    a[i-1]:=StrToFloat((Form1.Components[i] as TEdit).Text);
   end;
  end;
 repeat
    Changed := FALSE; 
    for k := 0 to Length(a)-2 do
      if a[k] > a[k + 1] then
      begin 
        buf:=a[k];
        a[k]:=a[k + 1];
        a[k + 1]:=buf;
        changed:=TRUE;
      end;
  until
    not changed; 
    ycr:=a[23];
for I := 0 to 23 do
  begin
    sum_a:=+a[i];
  end;
end;
kta87 вне форума Ответить с цитированием
Старый 25.10.2011, 23:19   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

вот мне интересно, а если бы у Вас было не 24 числа, а 100, так бы и писали 100 переменных y1, y2, y3... y99, y100 ?!
Давным давно уже люди придумали МАССИВЫ!
Заносите значения в массив, обрабатывайте в цикле. это будет просто, надёжно, наглядно, кратко, гибко и правильно!


а по сути вопроса - Вы неправы!
Если у Вас, допустим, есть неделя, пять дней не приносили газеты (число равно ноль), а в пятницу принесли 10, а в воскресенье - 4, то сколько газет приносили В СРЕДНЕМ в день?
по всем правилам: 0+0+0+0+0+10+4 = 14 / 7 = 2 ( в среднем две газеты в день).

Если же Вы считаете по каким то другим математическим правилам (не исключаю, что в мат.статистике могут быть другие правила расчёта среднеарифметического), тогда нужно заводить счётчик и считать, сколько значение не было равно нулю. Ну и потом, при вычислении среднеарифметического делить на этот счётчик.

Опять таки повторюсь - удобнее это делать с элементами массива!


p.s. а вместо кучи Edit'ов в подобных задачах удобнее использовать StringGrid

Добавлено

Цитата:
Код:
for I := 0 to 23 do
  begin
    sum_a:=+a[i];  
end;
красным я выделил ошибочный код!

Последний раз редактировалось Serge_Bliznykov; 25.10.2011 в 23:22.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2011, 23:57   #4
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 927
По умолчанию

а как правильно поставить тут сумму?
kta87 вне форума Ответить с цитированием
Старый 26.10.2011, 00:26   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

например, так:
Цитата:
sum_a := 0;
for i := 0 to Length(a)-1 do
begin
sum_a:=sum_a+a[i];
end;
p.s. кстати, я не вижу, что бы переменная sum_a дальше где-то использовалась..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.10.2011, 00:56   #6
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 927
Радость

Цитата:
p.s. кстати, я не вижу, что бы переменная sum_a дальше где-то использовалась..
Ну это потому, что тут представлена всего лишь часть кода программы...
Ну вот интересующая тебя часть
Код:
Qi:= Round(4*Bi*sum_a);
P.S. За исправление по сумме отдельное спасибо! те еще раз +
kta87 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимальное число в последовательности vladoscom93 Паскаль, Turbo Pascal, PascalABC.NET 11 14.12.2010 21:43
C++. среднее арифметическое и минимальное и максимальное число последовательности дробных чисе ~Az@liya~ Помощь студентам 2 08.11.2010 18:07
найти максимальное из чисел алешка Паскаль, Turbo Pascal, PascalABC.NET 5 29.05.2010 23:10
Найти максимальное по модулю элемент матрицы Aleksey_Popov93 Паскаль, Turbo Pascal, PascalABC.NET 5 23.04.2010 00:58
Найти максимальное число.Паскаль. Karabas Паскаль, Turbo Pascal, PascalABC.NET 2 16.12.2008 21:13