IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> найти среднее арифметическое вектора, вектор N<=40
Борис
сообщение 10.02.2006 13:50
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Дан вектор В(N), N<=40. Найти среднее арифметическое всех элементов вектора за исключением
максимального и минимального по абсолютной величине. (учесть, что |max| u |min| могут быть несколько)

нужно написать все с процедурами и функцией. Сделайте пожалучста кто-нибудь. А то я не знаю как описывать процедуры с функциями... wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 10.02.2006 13:54
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Во первых, что уже готово ? Во вторых зайди сюда : FAQ : Массивы, матрицы, типичные задачи, если есть проблемы в работе с массивами

А алгоритм решение твоей задачи следующий : находишь абсолютные значение максимального и минимального элементов, затем делеаешь следующее :


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;



Сообщение отредактировано: klem4 - 10.02.2006 13:55


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Борис
сообщение 10.02.2006 14:01
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


Цитата(klem4 @ 10.02.2006 13:54)
Во первых, что уже готово ?

у меня не получается описывать процедуры с функциями, покажи как будет выглядеть функция с поиском min и max плиз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.02.2006 14:03
Сообщение #4


Гость






Я бы сделал по-другому: Сначала отсортировал вектор (неважно, в каком направлении - можно и так и так...), потом "отсек" все крайние одинаковые элементы с обеих сторон, и потом уже прошелся бы обычным циклом, суммируя элементы...
 К началу страницы 
+ Ответить 
klem4
сообщение 10.02.2006 14:04
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +



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;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Борис
сообщение 10.02.2006 14:12
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 29
Пол: Мужской

Репутация: -  0  +


сделайте кто-нибудь, только обязательно с процедурами и функцией.
200 рублей плачу кто сделает.

ты не на рынке... mad.gif

при чем здесь рынок??
я реально прошу просто сделать мне задачу.
очень срочно нужно....

Сообщение отредактировано: Altair - 10.02.2006 14:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 10.02.2006 14:12
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Я могу перенести тему в разед "Задачи на заказ", но шансов что там ее тебе кто-то решит я думаю не много, я привел тебе пример как работать с массивм через подпрограмму + воспользуйся поиском, огромное множество задач на массивы решено с использованием подпрограмм, да почти все наверное + основной алогитм я тебе тоже показал. Решай.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 10.02.2006 14:22
Сообщение #8


Гость






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);

begin
sort(a, n);
get_ranges(a, st, fn);
writeln('average = ', get_average(a, st, fn) : 10 : 5);
end.

dry.gif Думать сам не хочешь? Больше ничего делать не буду - разбирайся сам ...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"