Дан вектор В(N), N<=40. Найти среднее арифметическое всех элементов вектора за исключением максимального и минимального по абсолютной величине. (учесть, что |max| u |min| могут быть несколько)
нужно написать все с процедурами и функцией. Сделайте пожалучста кто-нибудь. А то я не знаю как описывать процедуры с функциями...
А алгоритм решение твоей задачи следующий : находишь абсолютные значение максимального и минимального элементов, затем делеаешь следующее :
sr := 0; count := 0; for i := 1 to n do if (x[i] <> min) and (x[i] <> max) then begin sr := sr + x[i]; inc(count); end;
if count <> 0 then sr := sr / count;
Борис
10.02.2006 18:01
Цитата(klem4 @ 10.02.2006 13:54)
Во первых, что уже готово ?
у меня не получается описывать процедуры с функциями, покажи как будет выглядеть функция с поиском min и max плиз
volvo
10.02.2006 18:03
Я бы сделал по-другому: Сначала отсортировал вектор (неважно, в каком направлении - можно и так и так...), потом "отсек" все крайние одинаковые элементы с обеих сторон, и потом уже прошелся бы обычным циклом, суммируя элементы...
klem4
10.02.2006 18:04
type TArr = array [1..100] of integer;
...
function Min(a : TArr; n : integer) : integer; var i,Amin : integer; begin Amin := maxint; for i := 1 to n do if abs(a[i]<abs[Amin]) then Amin := abs(a[i]); Min := Amin; end;
Борис
10.02.2006 18:12
сделайте кто-нибудь, только обязательно с процедурами и функцией. 200 рублей плачу кто сделает.
ты не на рынке...
при чем здесь рынок?? я реально прошу просто сделать мне задачу. очень срочно нужно....
klem4
10.02.2006 18:12
Я могу перенести тему в разед "Задачи на заказ", но шансов что там ее тебе кто-то решит я думаю не много, я привел тебе пример как работать с массивм через подпрограмму + воспользуйся поиском, огромное множество задач на массивы решено с использованием подпрограмм, да почти все наверное + основной алогитм я тебе тоже показал. Решай.
volvo
10.02.2006 18:22
const n = 10; type buffer = array[1 .. n] of integer;
procedure sort(var ar: buffer; n: integer); var i, j, T: integer; begin for i := 1 to n do for j := n downto i + 1 do if ar[Pred(j)] > ar[j] then begin T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T end end;
procedure get_ranges(const arr: buffer; var start, finish: integer); begin start := 1; finish := n; while (arr[start + 1] = arr[start]) and (start < n) do inc(start); inc(start); while (arr[finish - 1] = arr[finish]) and (finish > 1) do dec(finish); dec(finish); end;
function get_average(const arr: buffer; start, finish: integer): real; var i: integer; s: real; begin s := 0; for i := start to finish do s := s + arr[i]; get_average := s / (finish - start + 1); end;
var i, st, fn: integer; const a: buffer = (1, 9, 4, 3, 5, 6, 8, 9, 9, 1);