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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2009, 13:31   #1
alves
Новичок
Джуниор
 
Регистрация: 04.11.2009
Сообщений: 3
По умолчанию не могу правильно записать ф-мулу для задачи с массивами на delphy 7

Задача такая: В линейном массиве действительных чисел подсчитать среднее арифметическое положительных элементов массива.
Код:
type
TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const n=3000;
var a:array [1..n] of integer;
i,k,s:integer;
b:real;
begin
for i:=1 to n do
begin
if a[i]>0 then k:=k+1;
if a[i]>0 then s:=s+a[i];
b:=s/k;
edit2.Text:=floattostr(b);
end;
end;
end.
s - сумма элементов,a[i] - итый элемент массива,k - количество положительных элементов.Незнаю как задать для n(верхняя граница массива) плюс бесконечность и не получается записать формулу,вычисляющую среднее арифметическое положительных элементов.И я вообще как то сомневаюсь,что выше написанное это правильно. Кто может - помогите плиз, буду очень благодарен.

Последний раз редактировалось Stilet; 04.11.2009 в 13:50. Причина: забыл написать,что это для дельфи
alves вне форума Ответить с цитированием
Старый 04.11.2009, 14:04   #2
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

В принципе вы делаете почти правильно. Вот небольшая правка вашего кода
Код:
procedure TForm1.Button1Click(Sender: TObject);
const n=3000;
var a:array [1..n] of integer;
i,k,s:integer;
b:real;
begin
S:=0;
k:=0;
for i:=1 to n do
if a[i]>0 then 
 begin 
  k:=k+1; 
  s:=s+a[i];
end;
b:=s/k
edit2.Text:=floattostr(b);
end;
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 04.11.2009, 14:26   #3
alves
Новичок
Джуниор
 
Регистрация: 04.11.2009
Сообщений: 3
По умолчанию

В form1 я создал edit1, button1 и edit2.Массив,как я понял, вводится так - в edit1 я пишу числа через пробел,например 1 2 3. Нажимаю вычислить и в edit2 выводятся ответ. Но почему то он всегда неправильный,например - 1210450,48501362;-1376315,56906077 и т. д. Среднее арифметическое 1 2 3 будет 2. Вобщем программа работает неправильно. Анатолий, можете еще раз поискать ошибку?
alves вне форума Ответить с цитированием
Старый 04.11.2009, 15:16   #4
Chudo4258
Форумчанин
 
Аватар для Chudo4258
 
Регистрация: 19.02.2009
Сообщений: 622
По умолчанию

Вот можно так сделать:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var st, stt: string;
    S,i:integer;
    A: array[1..3000] of integer;
    Sr:real;
begin
S:=0;
InputQuery('Количество элементов в массиве','',st);
for i:=1 to StrToInt(St) do
 begin
  InputQuery('Значение '+IntToStr(i)+' элемента','',stt);
  A[i]:=StrToInt(stt);
  S:=S+A[i];
  Memo1.Lines.Add('A['+IntToStr(i)+']='+stt);
 end;
Memo1.Lines.Add('Сумма='+IntToStr(S));
Memo1.Lines.Add('Среднее арфим.='+FloatToStr(S/StrToInt(St)));
end;
Вложения
Тип файла: rar Новая папка.rar (175.5 Кб, 10 просмотров)
Жми на весы!!!

Последний раз редактировалось Chudo4258; 04.11.2009 в 17:14.
Chudo4258 вне форума Ответить с цитированием
Старый 04.11.2009, 16:52   #5
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

alves
В вашем варианте предварительно необходимо віделить числа из строки в edit1.text и записать их в массив a. Но вам лучше пока воспользоваться вариантом предложеным Chudo4258
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 04.11.2009, 17:37   #6
alves
Новичок
Джуниор
 
Регистрация: 04.11.2009
Сообщений: 3
По умолчанию

огромнейшое вам спасибо!!!
alves вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно записать код юникодного символа 0xAD программно для вывода? SkAndrew Общие вопросы Delphi 4 08.11.2008 08:55
Как правильно записать стиль Михаил Юрьевич Общие вопросы Delphi 11 30.06.2008 11:30