![]() |
|
|
#1
|
|||
|
|||
|
Вводится массив. Сколько в нем чисел совпадают с медианой (медиана - это среднее арифметическое всех чисел в массиве).
На вид простая! Как я понял надо в ListBox ввести числа сложить их и разделить на количество, и в цикле проверить каждое число равно ли оно средне арифметическому числу и вывести...Но у меня как то не получается всё сделать правильно... |
|
#2
|
||||
|
||||
|
Если работать только с целыми числами, то примерно вот так:
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
data:array of integer;
arLen:integer;
i,summ,med:integer;
counter:integer;
begin
WriteLn('Input array length');
ReadLn(arLen);
SetLength(data,arLen);
counter:=1;
summ:=0;
for i:=Low(data) to High(data) do
begin
WriteLn(Format('Input element #%d',[counter]));
ReadLn(data[i]);
inc(counter);
inc(summ,data[i]);
end;
med:=summ div arLen;
summ:=0;
for i:=Low(data) to High(data) do
if data[i]=med then
inc(summ);
WriteLn(Format('Result - %d element(s)',[summ]));
ReadLn;
data:=nil;
end. |
|
#3
|
|||
|
|||
|
А визуальной случайно нету? Или вот как здесь зделать так что бы делил сумму на количество элементов?
Код:
Var Sum,A,i:integer;
begin
Sum:=0;
for i:=0 to ListBox1.Items.Count-1 do
begin
A:=StrToInt(ListBox1.Items[1]);
Sum:=Sum+A
end;
ShowMessage('Sum is '+IntToStr(Sum));
end;Последний раз редактировалось Admin, 09.12.2009 в 15:10. |
|
#4
|
|||
|
|||
|
А визуально сам сделаешь.
Или в раздел "Работа"... |
|
#5
|
|||
|
|||
|
я зделал, и среднее значение счтает! Но нехочет находить одинаковые числа...Может кто подскажет где здесь ошибка?
Код:
Var Sum,A,i,sum2,sum3:integer;
begin
Sum:=0; i:=0;
while StringGrid1.Cells[0,i]<>'' do
begin
A:=StrToInt(StringGrid1.Cells[0,i]);
Sum:=Sum+A;
Inc(i)
end;
Sum2:=Sum div i;
Sum3:=0;
if sum=sum2 then sum3:=sum3+1;
ShowMessage('Sum is '+IntToStr(sum3))
end; |