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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.03.2015, 18:44   #1
railya2015
 
Регистрация: 01.03.2015
Сообщений: 8
По умолчанию Подсчитать среднее

Запрограммировать оценку эмпирического среднего по участку временного ряда методом суммирования с накоплением, оформив алгоритм в виде функции.
На входе подпрограммы: массив элементов вещественного типа, индекс первого элемента массива и длина анализируемого участка в отсчетах.
На выходе подпрограммы: оценка эмпирического среднего.
Код:
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  f:textfile;
  FN: string;
implementation
 
{$R *.lfm}
 
{ TForm1 }
function Exp(A: array of double; start,len:integer): double;
var
   m: array of double; l,n:integer;
   begin
setlength(m,len)
for i:=0 to len-1 do
m[i]:=A
[star+i];
 
while length(m)>1 do
begin
l:=length(m);
for i:=0 to trunc(l/2)-1 do
m[i]:=m[2*i]+m[2*i+1]/2;
if l mod 2-1 then l
  begin
m[trunc(l/2)]:=m[l-1];
setlength(trunc(l/2)+1);
   end;
else
setlength (m,trunc(l/2));
result:=m[0];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  i,n:integer;
  s:string;
  A:array of double;
begin
  OpenDialog1.Execute;
  FN:=OpenDialog1.Filename;
  AssignFile(f,FN);
  Reset(f);
  n:=0;
  while not Eof(f) do
  begin
  readln(f,s);
  n:=n+1;
  end;
  reset(f);
  setLength(a,n);
  for i:=0 to n-1 do
  begin
  readln(f,s);
  a[i]:=strtofloat(s);
  //showmessage(floattostr(a[i]));
  end;
closefile(f);
    Edit1.Text:=floattostr(Exp(A,0,length(a)));
      end;
 
end.
пишет ошибку, скажите что не так?

Последний раз редактировалось Serge_Bliznykov; 03.03.2015 в 11:38.
railya2015 вне форума
Старый 02.03.2015, 19:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А сообщение об ошибке секретное? Не, не так - пусть кто-то глазами компилятором по совместительству поработает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 02.03.2015, 19:39   #3
railya2015
 
Регистрация: 01.03.2015
Сообщений: 8
По умолчанию

Я не могу понять в чем ошибка и помочь не кому, поэтому сюда написала
railya2015 вне форума
Старый 02.03.2015, 20:44   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Я не могу понять в чем ошибка и помочь не кому, поэтому сюда написала
телепаты перевелись на работу в «спортлото». туда и пиши.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума
Старый 03.03.2015, 11:37   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от railya2015 Посмотреть сообщение
Я не могу понять в чем ошибка и помочь не кому, поэтому сюда написала
Если не можете понять и словами выразить "в чём ошибка", тогда, хотя бы сделайте скриншот, на котором видна ошибка и выложите полученную картинку сюда, на форум.

может у Вас в файле есть строчки, в которых находятся не числовые значения?

ну и ещё. Использовать имена встроенных функций - это моветон и прямой путь к багам!
Зачем Вам использовать имя EXP, не хватает фантазии придумать другое название для своей функции?!

Последний раз редактировалось Serge_Bliznykov; 03.03.2015 в 11:42.
Serge_Bliznykov вне форума
Старый 03.03.2015, 11:53   #6
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

ну как минимум функция не объявлена.
да и сама функция одна большая ошибка
Код:
function Exp(A: array of double; start,len:integer): double;
var
 m: array of double; 
 l,n:integer;
begin                     // первый begin
 setlength(m,len)
 for i:=0 to len-1 do 
  m[i]:=A[star+i];
 while length(m)>1 do
  begin                    // второй begin
   l:=length(m);
   for i:=0 to trunc(l/2)-1 do
   m[i]:=m[2*i]+m[2*i+1]/2;
   if l mod 2-1 then l // что выполняется? 
 begin                   // третий begin
  m[trunc(l/2)]:=m[l-1];
  setlength(trunc(l/2)+1);
 end;            // закрывает 3 begin
      else // не понятно откуда  и куда 
       setlength (m,trunc(l/2));
result:=m[0];
end; // закрывает 2 begin
 // где еще 1 end;
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 03.03.2015 в 12:21.
Dvoishnik вне форума
Старый 04.03.2015, 00:31   #7
railya2015
 
Регистрация: 01.03.2015
Сообщений: 8
По умолчанию

Все я разобралась
railya2015 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана последовательность целых чисел.Подсчитать среднее арифметическое отрицательных элементов. d_dima Помощь студентам 5 20.03.2013 15:14
Подсчитать среднее и вывести. ubun PHP 10 17.01.2012 22:39
В каждой строке двумерного массива подсчитать среднее геометрическое значение gor-007 Помощь студентам 10 22.06.2010 12:49
Подсчитать среднее арифметическое элементов, расположенных под побочной диагональю. в С# Frenki Помощь студентам 0 13.10.2009 15:56