Форум «Всё о Паскале» _ Задачи _ одномерный массив
Автор: Ksusha 17.10.2006 21:37
как мне найти сумму элементов массива между минимальным и максимальным значением? помогите пожалуйста, а то мне никак не сделать
Автор: klem4 17.10.2006 21:41
Как найти номер минимального и максимального значения знаешь ? Если найдешь их дальше все не сложнее, в цикле от номера минимального значения до номера максимального суммируешь элементы и все !
Воспользуйся поиском по форуму, много задач решено на массивы, ну и + http://forum.pascal.net.ru/index.php?showtopic=2694
Автор: Ksusha 17.10.2006 22:44
номера элементов нашла, а суммировать не знаю как...
Автор: 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
ой, ну да ошиблась вот така все равно не то считает
Автор: мисс_граффити 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
СПАСИБОЧКИ, большое
Автор: 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.
и все работает
А могли бы мне помочь ещё с одной задачкой: дана последовательность x=(x1,x2,..xn). Сдвинте её циклически на k элементов влево. ВООООБЩЕ не знаю как делать!!!!!!!!
Автор: 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 значение.....
Автор: мисс_граффити 18.10.2006 2:26
а ты рассматривай 2 случая: первым стоит мин или первым макс.
Автор: Ksusha 18.10.2006 2:32
ну да, спасибки! все получилось. считает теперь между, а не исключает