Другие языки программирования и технологии

pascal одномерные массивы. дан массив А(30).

дан массив А(30). найти сумму и количество положительных элементов, расположенных между максимальными и минимальными элементами массива. pomogite please
const n=30; var a:array[1..n]of integer; j,k,imin,imax,min,max:integer;
begin
randomize; for j:=1 to n do a[j]:=random(199)-99;
for j:=1 to n do write(a[j]:4); writeln;
min:=a[1]; max:=a[1];
for j:=1 to n do
begin
if a[j] <=min then begin min:=a[j]; imin:=j end;
if a[j] >=max then begin max:=a[j]; imax:=j end;
end;
if imin >imax then begin j:=imin; imin:=imax; imax:=j end;
for j:=imin+1 to imax-1 do k:=k+a[j];
writeln('sum=',k); readln
end.

Если максимальных или минимальных элементов несколько, это недоработка условия. Тогда решение, от какого из них до какого суммировать, оставляется на усмотрение программиста.
Umed Jovidzoda
Umed Jovidzoda
22 474
Лучший ответ
Еще дополнение:
Для многих типов применимы функции Low и High - удобно когда надо задать начальное малое или большое значение.
Юрий Меркулов
Юрий Меркулов
97 288
Ну так в чем проблема? Ищите индексы

MaxI := 1;
MinI := 1;
for i:=1 to n do begin
if A[ i ] > A [MaxI] then MaxI : = i;
if A[ i ] < A [MinI] then MinI : = i;
end;

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

Вот только вопрос, а что делать, если в массиве несколько одинаковых максимальных или минимальных элементов?
const
A=30;
Nmin:=-100; // минимальный параметр
Nmax:=100; //максимальный
var
flag_max : integer;
flag_min : integer;
i. jmin,jmax : integer; //счетчики
Randomize;
array max[A];
//заполняем случайніми числами диапозон -100 +100
for i=1 do A do begin max=:= Random (Nmin + 1) - 2 * Nmax; end;
//ищим максимальный элемент
for i=1 do A do begin if max>max[i+1] then begin flag_max:=max
jmax:=i; end; else begin flag_max:=max[i+1];
jmax:=i; end; end;
//минимальный элемент
for i=1 do A do begin if max>max[i+1] then begin flag_min:=max[i+1]
jmin:=i; end; else begin flag_min:=max; jmin:=i; end; end;
//подсчитываем сумму
for i=jmin do jmax-1 do begin max:=max[i+1] end;
//сумма чисел в рандовом массиве между макс и мин єлементом
write('сума',max);
Вообше я такое уже лет 10 не писал.. . но стыдно такое просить сделать!
немного поправлю предыдущий ответ.

Maxl лучше поставить не 1 а очень малое значение (какие ограничения стоят на значения массива? )
т. к. максимально может быть и отрицательным

Minl тоже следует поставить максимальное из ограничений значений массива.
Samir Иta Asadovieo
Samir Иta Asadovieo
742