Наибольшие и наименьшие элементы в массиве! Опции
В одномерном массиве найти разницу между суммой наибольших элементов последовательности и наименьших элементов последовательности.
Вопрос в том, как определить наибольшие и наименьшие элементы?
Задача:
В одномерном массиве найти разницу между суммой наибольших элементов последовательности и наименьших элементов последовательности.
Вопрос в том, как определить наибольшие и наименьшие элементы?
А пример привести можешь? А то я боюсь что неправилно тебя поняла.
Есть одна идея но не уверенна что это то что тебе нужно:
Отсортируй массив по возростанию, тогда первые N/2 элементов массива будут наименьшими, а вторая часть маараха будет состоять из N/2 элементов наибольших. Без проблем в одном цикле после сортировки можно найти суммы :
if i <= N/2 then sum1 := sum1 + arr
else sum2 := sum2 + arr
end;
end;
и потом вычислить разницу между ними.
Учти! При нечетном N средний элемент уходит в sum2.
А пример привести можешь? А то я боюсь что неправилно тебя поняла.
Есть одна идея но не уверенна что это то что тебе нужно:
Отсортируй массив по возростанию, тогда первые N/2 элементов массива будут наименьшими, а вторая часть маараха будет состоять из N/2 элементов наибольших. Без проблем в одном цикле после сортировки можно найти суммы :
if i <= N/2 then sum1 := sum1 + arr
else sum2 := sum2 + arr
end;
end;
и потом вычислить разницу между ними.
Учти! При нечетном N средний элемент уходит в sum2.
Не думаю, что это так.
А если массив выглядит так:
1,2,3,3,4,5
Число 3 будет и наименьшим, и наибольшим?
ЗЫ: а что такое маарах?
Не думаю, что это так.
А если массив выглядит так:
1,2,3,3,4,5
Число 3 будет и наименьшим, и наибольшим?
не так. число 3 будет входить как в сумму наибольших, так и в сумму наименьших. а это совсем другое дело.
не так. число 3 будет входить как в сумму наибольших, так и в сумму наименьших. а это совсем другое дело.
Вообще-то OlgaKr написала
Отсортируй массив по возростанию, тогда первые N/2 элементов массива будут наименьшими, а вторая часть маараха будет состоять из N/2 элементов наибольших
Я бы наверное использовал другой подход:
найти максимальное и минимальное значения в массиве, а потом из суммы элементов, у которых значение = max, вычесть сумму элементов, у которых значение = min.
Хотя это мое личное мнение. Пусть лучше автор скажет, как надо.
Вообще-то OlgaKr написала
Я бы наверное использовал другой подход:
найти максимальное и минимальное значения в массиве, а потом из суммы элементов, у которых значение = max, вычесть сумму элементов, у которых значение = min.
Хотя это мое личное мнение. Пусть лучше автор скажет, как надо.
В том то и проблема что автор не очень подробно объяснил что ему надо.
P.S. маарах(hebrew) - массив
В том то и проблема что автор не очень подробно объяснил что ему надо.
Да я и сам не знаю в подробностях, как решить эту задачу! Меня не было на практике, когда давали задачу, я её у друга переписал!
В принципе твой метод работает, но в случае, когда встречаются два одинаковых числа, то одно из них идёт в сумму наименьших, а другое в сумму наибольших, а если три одинаковых, то одно идёт сумму наименьших, а два других в сумму наибольших, что вроде бы неправильно.
Я бы наверное использовал другой подход:
найти максимальное и минимальное значения в массиве, а потом из суммы элементов, у которых значение = max, вычесть сумму элементов, у которых значение = min.
А можно поподробнее? Ну вот найду я максимальный и мининимальный элемент, а далее как?
Да я и сам не знаю в подробностях, как решить эту задачу! Меня не было на практике, когда давали задачу, я её у друга переписал!
В принципе твой метод работает, но в случае, когда встречаются два одинаковых числа, то одно из них идёт в сумму наименьших, а другое в сумму наибольших, а если три одинаковых, то одно идёт сумму наименьших, а два других в сумму наибольших, что вроде бы неправильно.
А можно поподробнее? Ну вот найду я максимальный и мининимальный элемент, а далее как?
Ну в принципе можно и за один проход все сделать:
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.
Ну в принципе можно и за один проход все сделать:
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.Самое умное выяснить у преподователя что он хочет. Наши в таких случаях давали исчерпывающий пример.
Ну в принципе можно и за один проход все сделать:
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.
Не работает! В твоём решении находится только максимальный и минимальный элементы и их разность.
Не работает! В твоём решении находится только максимальный и минимальный элементы и их разность.
Это означает, что в твоем массиве максимальный эл-т в единственном количестве и минимальный тоже один.
Я прогу писал не в Паскале, а на коленке, но специально потом проверил - все работает.
Подсунул массив (8, 3, 7, 8, 2, 4, 8, 2, 5, 6).
Тут максимальных эл-тов (равных 8 ) 3 штуки, их сумма 24. Минимальных (равных 2) 2 штуки, их сумма 4. Разность равна 20, что программа и выводит.
Это означает, что в твоем массиве максимальный эл-т в единственном количестве и минимальный тоже один.
Я прогу писал не в Паскале, а на коленке, но специально потом проверил - все работает.
Подсунул массив (8, 3, 7, 8, 2, 4, 8, 2, 5, 6).
Тут максимальных эл-тов (равных 8 ) 3 штуки, их сумма 24. Минимальных (равных 2) 2 штуки, их сумма 4. Разность равна 20, что программа и выводит.
А, ну если так, то работает! Придётся значит преподу задачу в двух вариантах показать! Ладно, спасибо за помощь!