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

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

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

Автор: Софа 7.05.2007 19:23

Подскажите, как до ума довести такую задачку?
Поменять местами максимальный и минимальный элемент массива размера 10.
Задача вроде легкая, я нашла максимальный и минимальный элемент, а поменять их местами не получается

max:=a[1]; min:=a[1];
for i:=1 to n Do
begin
if max < a[i] then begin
max:=a[i]; end; end;

for i:=1 to n Do
begin
if min > a[i] then begin
min:=a[i];
end; end;

writeln (max,min);
writeln;
{for i:=1 to n Do

Vs:=max;
max:=min;
min:=Vs;} - что в этой части не так?

Автор: Tan 7.05.2007 19:32

Для начала надо знать, что делать если несколько маскимальных элементов встречается и минимальных ? (например если их количество одинаково, тут всё ясно, а если 3 максимальных и 2 минимальных или наобарот, то какие из них менять?)

Автор: Адель 7.05.2007 19:34

for i:=1 to n do 
begin
if a[i]=min then a[i]:=max;
if a[i]=max then a[i]:=min;
end;

попробуй так
for i:=1 to n Do
begin
if min > a[i] then begin
min:=a[i];
end; end;

незачем столько ставить

Автор: Софа 7.05.2007 19:57

Все равно не получается. А если использовать вспомогательную ячейку? И как это написать? Софа

Автор: Адель 7.05.2007 20:34

for i:=1 to 5 do
begin
if a[i]=min then a[i]:=max
else
if a[i]=max then a[i]:=min;
end;

да, ошилась..

Автор: volvo 7.05.2007 20:41

Цитата
Задача вроде легкая, я нашла максимальный и минимальный элемент, а поменять их местами не получается
Чтобы их поменять местами, надо находить не сами макс./мин. элементы, а их индексы (назовем их, к примеру, i_min и i_max)... Тогда после того, как индексы найдены - делать так:

Vs:=a[i_max];
a[i_max]:=a[i_min];
a[i_min]:=Vs;

Автор: Софа 8.05.2007 14:52

Получилось! Спасибо всем!