Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Наибольшие и наименьшие элементы в массиве! Опции

9.9K
29 марта 2006 года
MoM
46 / / 12.03.2006
Задача:
В одномерном массиве найти разницу между суммой наибольших элементов последовательности и наименьших элементов последовательности.

Вопрос в том, как определить наибольшие и наименьшие элементы?
242
29 марта 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by MoM
Задача:
В одномерном массиве найти разницу между суммой наибольших элементов последовательности и наименьших элементов последовательности.

Вопрос в том, как определить наибольшие и наименьшие элементы?



А пример привести можешь? А то я боюсь что неправилно тебя поняла.
Есть одна идея но не уверенна что это то что тебе нужно:
Отсортируй массив по возростанию, тогда первые N/2 элементов массива будут наименьшими, а вторая часть маараха будет состоять из N/2 элементов наибольших. Без проблем в одном цикле после сортировки можно найти суммы :

 
Код:
for i:=1 to N begin
if i <= N/2 then sum1 := sum1 + arr
else sum2 := sum2 + arr
end;
end;

и потом вычислить разницу между ними.
Учти! При нечетном N средний элемент уходит в sum2.
929
30 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by OlgaKr
А пример привести можешь? А то я боюсь что неправилно тебя поняла.
Есть одна идея но не уверенна что это то что тебе нужно:
Отсортируй массив по возростанию, тогда первые N/2 элементов массива будут наименьшими, а вторая часть маараха будет состоять из N/2 элементов наибольших. Без проблем в одном цикле после сортировки можно найти суммы :
 
Код:
for i:=1 to N begin
if i <= N/2 then sum1 := sum1 + arr
else sum2 := sum2 + arr
end;
end;

и потом вычислить разницу между ними.
Учти! При нечетном N средний элемент уходит в sum2.


Не думаю, что это так.
А если массив выглядит так:
1,2,3,3,4,5
Число 3 будет и наименьшим, и наибольшим?

ЗЫ: а что такое маарах?

2
30 марта 2006 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by sp999
Не думаю, что это так.
А если массив выглядит так:
1,2,3,3,4,5
Число 3 будет и наименьшим, и наибольшим?



не так. число 3 будет входить как в сумму наибольших, так и в сумму наименьших. а это совсем другое дело.

929
30 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by squirL
не так. число 3 будет входить как в сумму наибольших, так и в сумму наименьших. а это совсем другое дело.


Вообще-то OlgaKr написала

Цитата:
Originally posted by OlgaKr
Отсортируй массив по возростанию, тогда первые N/2 элементов массива будут наименьшими, а вторая часть маараха будет состоять из N/2 элементов наибольших


Я бы наверное использовал другой подход:
найти максимальное и минимальное значения в массиве, а потом из суммы элементов, у которых значение = max, вычесть сумму элементов, у которых значение = min.
Хотя это мое личное мнение. Пусть лучше автор скажет, как надо.

242
30 марта 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by sp999
Вообще-то OlgaKr написала

Я бы наверное использовал другой подход:
найти максимальное и минимальное значения в массиве, а потом из суммы элементов, у которых значение = max, вычесть сумму элементов, у которых значение = min.
Хотя это мое личное мнение. Пусть лучше автор скажет, как надо.



В том то и проблема что автор не очень подробно объяснил что ему надо.

P.S. маарах(hebrew) - массив

9.9K
30 марта 2006 года
MoM
46 / / 12.03.2006
Цитата:
Originally posted by OlgaKr
В том то и проблема что автор не очень подробно объяснил что ему надо.


Да я и сам не знаю в подробностях, как решить эту задачу! Меня не было на практике, когда давали задачу, я её у друга переписал!

В принципе твой метод работает, но в случае, когда встречаются два одинаковых числа, то одно из них идёт в сумму наименьших, а другое в сумму наибольших, а если три одинаковых, то одно идёт сумму наименьших, а два других в сумму наибольших, что вроде бы неправильно.

Цитата:
Originally posted by sp999
Я бы наверное использовал другой подход:
найти максимальное и минимальное значения в массиве, а потом из суммы элементов, у которых значение = max, вычесть сумму элементов, у которых значение = min.


А можно поподробнее? Ну вот найду я максимальный и мининимальный элемент, а далее как?

929
30 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by MoM
Да я и сам не знаю в подробностях, как решить эту задачу! Меня не было на практике, когда давали задачу, я её у друга переписал!

В принципе твой метод работает, но в случае, когда встречаются два одинаковых числа, то одно из них идёт в сумму наименьших, а другое в сумму наибольших, а если три одинаковых, то одно идёт сумму наименьших, а два других в сумму наибольших, что вроде бы неправильно.


А можно поподробнее? Ну вот найду я максимальный и мининимальный элемент, а далее как?


Ну в принципе можно и за один проход все сделать:

Код:
const
  N = 10;
var
  maxv, minv, summax, summin: Integer;
  a: array[1..N] of Integer;
  i: Integer;
begin
  {ввод массива писать не буду}
  summax := 0;
  summin := 0;
  maxv := a[1];
  minv := a[1];
  for i := 1 to N do begin
    if a > maxv then begin
      maxv := a;
      summax := maxv;
    end else
      if a = maxv then
        Inc(summax, maxv);
    if a < minv then begin
      minv := a;
      summin := minv;
    end else
      if a = minv then
        Inc(summin, minv);
  end;
  WriteLn(summax - summin);
end.
242
30 марта 2006 года
Оlga
2.2K / / 04.02.2006
Цитата:
Originally posted by sp999
Ну в принципе можно и за один проход все сделать:
Код:
const
  N = 10;
var
  maxv, minv, summax, summin: Integer;
  a: array[1..N] of Integer;
  i: Integer;
begin
  {ввод массива писать не буду}
  summax := 0;
  summin := 0;
  maxv := a[1];
  minv := a[1];
  for i := 1 to N do begin
    if a > maxv then begin
      maxv := a;
      summax := maxv;
    end else
      if a = maxv then
        Inc(summax, maxv);
    if a < minv then begin
      minv := a;
      summin := minv;
    end else
      if a = minv then
        Inc(summin, minv);
  end;
  WriteLn(summax - summin);
end.


Насколько я поняла ты находишь min, max и сумму элементов равным им.
Интересное решение, но если все же все элементы массива надо поделить на минимальные и максималные?
Можно найти мин, мах. Затем вычислить average( (min+max)/2 ) и таким образом установить четкие границы для минимальных и максимальных значений. Однако одно но: куда причислить значение average если в массиве есть элемент равный ему?
P.S.Самое умное выяснить у преподователя что он хочет. Наши в таких случаях давали исчерпывающий пример.

9.9K
30 марта 2006 года
MoM
46 / / 12.03.2006
Цитата:
Originally posted by sp999
Ну в принципе можно и за один проход все сделать:
Код:
const
  N = 10;
var
  maxv, minv, summax, summin: Integer;
  a: array[1..N] of Integer;
  i: Integer;
begin
  {ввод массива писать не буду}
  summax := 0;
  summin := 0;
  maxv := a[1];
  minv := a[1];
  for i := 1 to N do begin
    if a > maxv then begin
      maxv := a;
      summax := maxv;
    end else
      if a = maxv then
        Inc(summax, maxv);
    if a < minv then begin
      minv := a;
      summin := minv;
    end else
      if a = minv then
        Inc(summin, minv);
  end;
  WriteLn(summax - summin);
end.


Не работает! В твоём решении находится только максимальный и минимальный элементы и их разность.

252
31 марта 2006 года
koderAlex
1.4K / / 07.09.2005
натрави на массив быструю сортировку , тогда первый и последний элементы будут соответственно min и max элементы . дальше по обстановке :) :)
929
31 марта 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by MoM
Не работает! В твоём решении находится только максимальный и минимальный элементы и их разность.


Это означает, что в твоем массиве максимальный эл-т в единственном количестве и минимальный тоже один.
Я прогу писал не в Паскале, а на коленке, но специально потом проверил - все работает.
Подсунул массив (8, 3, 7, 8, 2, 4, 8, 2, 5, 6).
Тут максимальных эл-тов (равных 8 ) 3 штуки, их сумма 24. Минимальных (равных 2) 2 штуки, их сумма 4. Разность равна 20, что программа и выводит.

9.9K
31 марта 2006 года
MoM
46 / / 12.03.2006
Цитата:
Originally posted by sp999
Это означает, что в твоем массиве максимальный эл-т в единственном количестве и минимальный тоже один.
Я прогу писал не в Паскале, а на коленке, но специально потом проверил - все работает.
Подсунул массив (8, 3, 7, 8, 2, 4, 8, 2, 5, 6).
Тут максимальных эл-тов (равных 8 ) 3 штуки, их сумма 24. Минимальных (равных 2) 2 штуки, их сумма 4. Разность равна 20, что программа и выводит.


А, ну если так, то работает! Придётся значит преподу задачу в двух вариантах показать! Ладно, спасибо за помощь!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог