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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 14.03.2009, 00:25   #1
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
Вопрос как посчитать среднее арифметическое значение

на форме есть мемо,в нем строчки с числами.всего чисел выводится от 60 до 600.нужно считать эти числа из мемо ,чтоб посчитать их среднее арифметическое.
вопрос - как это реализовать??
CraZZy RabbIt вне форума
Старый 14.03.2009, 00:38   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Как пример. Числа вводятся в мемо через пробел.
Результат - в Edit.

Текст из мемо - в строку.
Идем до конца строки.
Пропускаем пробелы.
Пока не встретим пробел, читаем из строки в буфер.
Переводим строку из буфера в число и плюсуем к сумме, увеличивая счетчик.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
buf,s : string;
cnt,i,sum : integer;
sred : double;
begin
cnt := 0;
sum := 0;
i:=1;
s := Memo1.Text;
while i<=length(s) do
  begin
  while (s[i]=' ') and (i<=length(s)) do inc(i);
  buf := '';
  while (s[i]<>' ') and (i<=length(s)) do
   begin
   buf := buf + s[i];
   inc(i);
   end;
  inc(cnt);
  sum := sum + StrToInt(buf);
  end;
sred := sum/cnt;
Edit1.Text := FloatToStr(sred);
end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 14.03.2009, 00:43   #3
eskander
Пользователь
 
Аватар для eskander
 
Регистрация: 01.03.2009
Сообщений: 29
По умолчанию

Код:
var
  i, sum:integer;
begin
  sum:=0;
  for i:=0 to memo1.lines.count-1 do sum:=sum+strtoint(memo1.lines.strings[i]);
  showmessage(floattostr(sum/i+1));
end;
в мессадже среднее арифметическое
eskander вне форума
Старый 14.03.2009, 11:50   #4
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Лучше писать не sum/i+1 а sum/memo1.lines.count

Чисто технически переменная цикла после окончания цикла считается неопределенной. Что реально в ней будет записано может сильно зависеть от оптимизации кода или от конкретного компилятора.
Jeni вне форума
Старый 14.03.2009, 12:49   #5
eskander
Пользователь
 
Аватар для eskander
 
Регистрация: 01.03.2009
Сообщений: 29
По умолчанию

Jeni, конечно же согласен с вами, но задачи оптимизации кода или чего-то прочего не стояло, так что можно и экстремально попрограммировать )
eskander вне форума
Старый 14.03.2009, 13:59   #6
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию

всем спасибо!!
CraZZy RabbIt вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В заданном целочисленном двумерном массиве найти среднее арифметическое в каждой строке Rise Паскаль, Turbo Pascal, PascalABC.NET 3 06.01.2009 00:55
Матрицы. Найти среднее арифметическое Waia Помощь студентам 1 06.11.2008 17:22