Помощь - Поиск - Пользователи - Календарь
Полная версия: одномерный массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ksusha
как мне найти сумму элементов массива между минимальным и максимальным значением? !help.gif помогите пожалуйста, а то мне никак не сделать sad.gif
klem4
Как найти номер минимального и максимального значения знаешь ? Если найдешь их дальше все не сложнее, в цикле от номера минимального значения до номера максимального суммируешь элементы и все !

Воспользуйся поиском по форуму, много задач решено на массивы, ну и + FAQ : Массивы, матрицы
Ksusha
номера элементов нашла, а суммировать не знаю как... mega_chok.gif
klem4

s := 0; // в начале обнуляем сумму

for i := nMin to nMax do // цикл от номера минимального элемента (nMin) до номера максимального (nMax)
s := s + x[i]; // суммируем

Ksusha


for i := nMin to nMax do
что то в этой строчке не так, пишет что ошибка....
klem4
Выложи полностью свой код, переношу тему в раздел "Задачи" ...
Ksusha
вот что я сделала, дальше не знаю как:

Код
Program cool;
uses crt;
Var
x: array [1..100] of real;
i,n :integer;
max, min,s,nmin, nmax:real;
begin
clrscr;
writeln('vvedite n');
readln(n);
writeln('vvedite znachenie n');
for i:=1 to n do
readln(x[i]);
max:=x[1];
nmax:=1;
for i:=1 to n do
if x[i]>max then
begin
max:=x[i];
nmax:=i
end;
min:=x[1];
nmin:=1;
for i:=1 to n do
if x[i]<min then
begin
min:=x[i];
nmin:=i;
end;
writeln('max=',max:4:4,' nmax=', nmax:4:4);
writeln('min=',min:4:4,' nmin=', nmin:4:4);
writeln('naidem summu znachenii mezhdu min i max' );
s:=0;

writeln(s);
readkey;
мисс_граффити
Цитата(Ksusha @ 17.10.2006 20:29) *

max, min,s,nmin, nmax:real;

и как ты себе представляешь элемент массива с номером, допустим, 1.6? или 2.987?
из-за этого и ошибка.

ну и еще... не ошибки, но...
почему нельзя искать минимум и максимум одним циклом?
зачем счетчик устанавливать с 1, когда можно начинать с 2?
Ksusha
ой, ну да ошиблась mellow.gif вот така все равно не то считает sad.gif
мисс_граффити
выкладывай исправленный код. я не ясновидящая!
то, что ты выложила, сумму считать не будет ВООБЩЕ.
Код
s:=0;
writeln(s);

даст тебе только выведение нуля.
как считать - тебе написали выше.
Ksusha
s:=0;
for i:=nmin to nmax do
s:=s+x[i];
writeln(s);

считает сумму всех значений, а мне нужно исключая max и min...
мисс_граффити
Код

s:=0;
for i:=nmin+1 to nmax-1 do
s:=s+x[i];
writeln(s);

кстати, оно работает, только если минимум стоит до максимума.
Ksusha
СПАСИБОЧКИ, большое rolleyes.gif
Ksusha
можно было все гораздо проще найти
Код
Program cool;
uses crt;
Var
x: array [1..100] of real;
i,n :integer;
max, min,s:real;
begin
clrscr;
writeln('vvedite n');
readln(n);
writeln('vvedite znachenie n');
for i:=1 to n do
readln(x[i]);
max:=x[1];
for i:=1 to n do
if  x[i]>max then
max:=x[i];
min:=x[1];
for i:=1 to n do
if  x[i]<min then
min:=x[i];
writeln('max=',max:4:4);
writeln('min=',min:4:4);
writeln('naidem summu znachenii mezhdu min i max' );
s:=0;
for i:=1 to n do
if x[i]<>min then
if x[i]<>max then
s:=s+x[i];
writeln(s:4:4);
readkey;
end.


и все работает yahoo!.gif

А могли бы мне помочь ещё с одной задачкой:
дана последовательность x=(x1,x2,..xn). Сдвинте её циклически на k элементов влево.
ВООООБЩЕ не знаю как делать!!!!!!!! mega_chok.gif
volvo
Цитата
и все работает
Уверена?

Введи 6 элементов:
2, 2, 5, 4, 2, 1

и посмотри, равен ли результат 6, как положено. А потом решай, ЧИТАТЬ ли внимательно все, что тебе пишут, или не надо...

P.S.
Следующее задание было решено - пользуйся поиском. Одна тема - один вопрос!
Ksusha
а почему вдруг должно равняться 6???
2+2+4+2=10!!!! так у меня и получается!

мисс_граффити
Это еще что за бред?
Код

s:=0;
for i:=1 to n do
if x[i]<>min then
if x[i]<>max then
s:=s+x[i];

???
ради чего тогда искать положение минимального и максимального эл-тов???
Ksusha
Цитата(мисс_граффити @ 17.10.2006 22:55) *


ради чего тогда искать положение минимального и максимального эл-тов???

ну так задача звучит "найдите сумму элементов расположенных между максимальным и минимальным элементами" поэтому их надо искать, что бы исключить из общей суммы!а если ты имеешь в виду, зачем искать их индекс, так можно и не искать!я это из программы и убрала... к тому же вроде бы все правильно получается....
мисс_граффити
зашибись.
ты считаешь сумму всех элементов, кроме минимального и максимального, а не сумму элементов, расположенных между минимальным и максимальным.
разницы не видишь?

кстати, даже это ты делаешь странно.
введи последовательность 1,1,2,5,5.
У тебя сумма будет 2... А должна быть?
Ksusha

ну может быть.... вот тока все равно, так что бы все нормально считалось не получается.... что бы не было разницы где стоит min или max значение..... sad.gif
мисс_граффити
а ты рассматривай 2 случая: первым стоит мин или первым макс.
Ksusha
ну да, спасибки! все получилось. считает теперь между, а не исключает wink.gif
мисс_граффити
круто.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.