Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 25.10.2011, 20:26   #1
kta87
Участник клуба
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 929
Репутация: 436

icq: 409973791
skype: softworking.ru
Печаль Найти среднее и максимальное из множества

Уважаемые формучане, помогите пожалуйста кодом. Получаю из 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
Сообщений: 929
Репутация: 436

icq: 409973791
skype: softworking.ru
По умолчанию

Все разобрался и сделал! Для тех кому нужно в будущем выкладываю :
Код:

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
Сообщений: 23,766
Репутация: 5213
По умолчанию

вот мне интересно, а если бы у Вас было не 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
Сообщений: 929
Репутация: 436

icq: 409973791
skype: softworking.ru
По умолчанию

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

например, так:
Цитата:
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
Сообщений: 929
Репутация: 436

icq: 409973791
skype: softworking.ru
Радость

Цитата:
p.s. кстати, я не вижу, что бы переменная sum_a дальше где-то использовалась..
Ну это потому, что тут представлена всего лишь часть кода программы...
Ну вот интересующая тебя часть
Код:

Qi:= Round(4*Bi*sum_a);

P.S. За исправление по сумме отдельное спасибо! те еще раз +
kta87 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


14:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru