Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ одномерный массив

Автор: Ksusha 17.10.2006 21:37

как мне найти сумму элементов массива между минимальным и максимальным значением? !help.gif помогите пожалуйста, а то мне никак не сделать sad.gif

Автор: klem4 17.10.2006 21:41

Как найти номер минимального и максимального значения знаешь ? Если найдешь их дальше все не сложнее, в цикле от номера минимального значения до номера максимального суммируешь элементы и все !

Воспользуйся поиском по форуму, много задач решено на массивы, ну и + http://forum.pascal.net.ru/index.php?showtopic=2694

Автор: Ksusha 17.10.2006 22:44

номера элементов нашла, а суммировать не знаю как... mega_chok.gif

Автор: klem4 17.10.2006 22:50


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

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


Автор: Ksusha 17.10.2006 22:55



for i := nMin to nMax do
что то в этой строчке не так, пишет что ошибка....

Автор: klem4 17.10.2006 23:16

Выложи полностью свой код, переношу тему в раздел "Задачи" ...

Автор: Ksusha 17.10.2006 23:29

вот что я сделала, дальше не знаю как:

Код
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;

Автор: мисс_граффити 17.10.2006 23:34

Цитата(Ksusha @ 17.10.2006 20:29) *

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

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

ну и еще... не ошибки, но...
почему нельзя искать минимум и максимум одним циклом?
зачем счетчик устанавливать с 1, когда можно начинать с 2?

Автор: Ksusha 17.10.2006 23:44

ой, ну да ошиблась mellow.gif вот така все равно не то считает sad.gif

Автор: мисс_граффити 18.10.2006 0:15

выкладывай исправленный код. я не ясновидящая!
то, что ты выложила, сумму считать не будет ВООБЩЕ.

Код
s:=0;
writeln(s);

даст тебе только выведение нуля.
как считать - тебе написали выше.

Автор: Ksusha 18.10.2006 0:19

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

считает сумму всех значений, а мне нужно исключая max и min...

Автор: мисс_граффити 18.10.2006 0:23

Код

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

кстати, оно работает, только если минимум стоит до максимума.

Автор: Ksusha 18.10.2006 0:26

СПАСИБОЧКИ, большое rolleyes.gif

Автор: Ksusha 18.10.2006 1:16

можно было все гораздо проще найти

Код
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 18.10.2006 1:18

Цитата
и все работает
Уверена?

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

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

P.S.
Следующее задание было решено - пользуйся поиском. Одна тема - один вопрос!

Автор: Ksusha 18.10.2006 1:33

а почему вдруг должно равняться 6???
2+2+4+2=10!!!! так у меня и получается!


Автор: мисс_граффити 18.10.2006 1:55

Это еще что за бред?

Код

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

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

Автор: Ksusha 18.10.2006 2:02

Цитата(мисс_граффити @ 17.10.2006 22:55) *


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

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

Автор: мисс_граффити 18.10.2006 2:04

зашибись.
ты считаешь сумму всех элементов, кроме минимального и максимального, а не сумму элементов, расположенных между минимальным и максимальным.
разницы не видишь?

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

Автор: Ksusha 18.10.2006 2:19


ну может быть.... вот тока все равно, так что бы все нормально считалось не получается.... что бы не было разницы где стоит min или max значение..... sad.gif

Автор: мисс_граффити 18.10.2006 2:26

а ты рассматривай 2 случая: первым стоит мин или первым макс.

Автор: Ksusha 18.10.2006 2:32

ну да, спасибки! все получилось. считает теперь между, а не исключает wink.gif

Автор: мисс_граффити 18.10.2006 2:35

круто.