Re: Редактирование и вычитка книги

Опять застрял:
Вот вам кусок кода, что я хочу сделать? Суть такая: я сверяю элементы массива, первый элемент (i) с всема (j), потом второй - (i) опять же со всема (j). И нахожу максимальное значение среди этих элементов. Мне нужно элемент под индексом максимального числа сделать отрицательным. Т.е., к примеру, 4-й элемент был максимальным, сделать его -1, чтобы при повторной прогонке он не рассматривался, как максимальный. Потому, что мне нужно вывести элементы по спаданию. Как мне "заминусовать" элемент под этим индексом?
Так сделать я не могу, потому что, скажем, 3-й элемент был больше 1-ого, а потом 7-й больше этого 3-его. И заминусуется уже и 3-й и 7-й - мне так не подходит.
Так тоже не могу, потому что "заминусует" последний (j).
Прошу помощи, как это сделать?
Добавлено спустя 5 минут 51 секунду:
Мда, дошло. Через 5 минут, как написал здесь.
- Код: Выделить всё
for i:=1 to n do begin max:=0;
for j:=1 to n do
if a[j]>max then max:=a[j];
cmax:=cmax+inttostr(max);
end;
Вот вам кусок кода, что я хочу сделать? Суть такая: я сверяю элементы массива, первый элемент (i) с всема (j), потом второй - (i) опять же со всема (j). И нахожу максимальное значение среди этих элементов. Мне нужно элемент под индексом максимального числа сделать отрицательным. Т.е., к примеру, 4-й элемент был максимальным, сделать его -1, чтобы при повторной прогонке он не рассматривался, как максимальный. Потому, что мне нужно вывести элементы по спаданию. Как мне "заминусовать" элемент под этим индексом?
- Код: Выделить всё
if a[j]>max then begin max:=a[j]; a[j]:=-1; end;
Так сделать я не могу, потому что, скажем, 3-й элемент был больше 1-ого, а потом 7-й больше этого 3-его. И заминусуется уже и 3-й и 7-й - мне так не подходит.
- Код: Выделить всё
if a[j]>max then max:=a[j];
a[j]:=-1
cmax:=cmax+inttostr(max);
Так тоже не могу, потому что "заминусует" последний (j).
Прошу помощи, как это сделать?
Добавлено спустя 5 минут 51 секунду:
- Код: Выделить всё
for i:=1 to n do begin max:=0;
for j:=1 to n do
if a[j]>max then begin max:=a[j]; k:=j; end;
cmax:=cmax+inttostr(max);
a[k]:=-1;
end;
Мда, дошло. Через 5 минут, как написал здесь.