Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.04.2014, 20:09
xxxmaximal xxxmaximal вне форума
Прохожий
 
Регистрация: 24.03.2014
Сообщения: 10
Версия Delphi: delphi 7
Репутация: 10
По умолчанию Помогите доделать

Пусть а1..аn - кол-во осадков в мм,выпавшее в москве в течении последних лет.С помощью подпрограмм статической библиотеки(unit) вычислить:
а)среднее кол-во осадков для заданного отрезка времени(от 1 до n)
б)отклонение от среднего для каждого года
в)наименьшее и наибольшее из отклонений
выбор действия в главной программе организовать с помощью списка выбора(combobox)
----
В общем мне кажется что с функцией sro что-то не так т.к не работает вывод массива этой функции в мемо, и поиск наименьшего и наибольшего отклонения при помощи массива so[i]
----
Код:
type
mas=array [1..20] of real;
var
s1:real;
so:mas;
function sr(a:mas;n:integer;i:integer):real;
var
s:real;
begin
s:=0;
for i:=0 to (n-1) do
s:=a[i]+s;
s1:=s/n;
sr:=s1;
end;
function sro(a:mas;n:integer;i:integer):mas; 
var
so:mas;
begin
for i:=0 to (n-1) do begin
so[i]:=a[i]-s1;
end;
end;
function bso(a:mas;n:integer;i:integer):real; 
var
max:integer;
begin
max:=1;
for i:=0 to (n-1)do
if so[i]>a[max] then max:=i;
Result:=max;
end;

function mso(a:mas;n:integer;i:integer):real;
var
min:integer;
begin
min:=1;
for i:=0 to (n-1)do
if so[i]<so[min] then min:=i;
Result:=min;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a:mas;
i,n,j:integer;

begin
n:=memo1.Lines.Count;
j:=memo2.lines.count;
for i:=0 to n do
a[i]:=strtoint(memo1.lines[i]);
case sign.ItemIndex of
0:label1.Caption:=floattostr(sr(a,i,n));
1:for i:=0 to j-1 do begin
memo2.lines.add(floattostr(so[i]));
end;
2:label3.Caption:=floattostr(bso(a,n,i));
3:label4.Caption:=floattostr(mso(a,n,i));
end;
end;
end.
Ps.извините что создал с такой же задачей , просто апнуть тему надо было (многое поисправлял , не знал как удалить)
Ответить с цитированием
  #2  
Старый 22.04.2014, 22:56
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от xxxmaximal
В общем мне кажется что с функцией sro что-то не так т.к не работает вывод массива этой функции в мемо, и поиск наименьшего и наибольшего отклонения при помощи массива so[i]
С этой функцией не так то, что результат своей работы она сохраняет в свой локальный массив so, который после завершении работы этой функции естественно бесследно уничтожается.
Да ещё эта функция в своих расчётах использует глобальную переменную s1 хотя не известно отработала ли до этого функция sr которая в эту переменную записывает корректное значение.
Вот эта же функция, только слегка отформатированная для большей наглядности:
Код:
function sro(a: mas; n: integer; i: integer): mas;
var
  so: mas;
begin
  for i := 0 to (n - 1) do
  begin
    so[i] := a[i] - s1;
  end;
end;

Да, и ещё параметр-переменная i для цикла...

Последний раз редактировалось poli-smen, 22.04.2014 в 22:59.
Ответить с цитированием
  #3  
Старый 23.04.2014, 03:36
xxxmaximal xxxmaximal вне форума
Прохожий
 
Регистрация: 24.03.2014
Сообщения: 10
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

можно что либо сделать чтобы массив so не удалялся , тк он мне нужен?
Ответить с цитированием
  #4  
Старый 23.04.2014, 10:16
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от xxxmaximal
можно что либо сделать чтобы массив so не удалялся , тк он мне нужен?
Можно - убери его из локальных переменных в этой функции, тогда данные будут сохраняться в одноимённую глобальную переменную.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
xxxmaximal (11.05.2014)
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:04.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025