|
Вопрос # 3 798/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
Подскажите пожалуйста как найти максимальный и минимальный элеиенты массива? Как можно поменять их местами при условии, что существует несколько максимальных элементов ( в массиве: 1 2 3 4 5 5 - максимальных элементов несколько: 5 5; как осуществить перестановку?)?
 |
Вопрос задал: prog-mer (статус: Посетитель)
Вопрос отправлен: 21 февраля 2010, 18:59
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Егор
Здравствуйте, Кравец Олег Валерьевич!
Можно, например, так:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
N = 15; // всего будет 15 чисел
var
a : array [1..N] of integer; // массив
i, min, max : integer;
begin
randomize; // включим счётчик случайных чисел
for i:=1 to N do // заполним массив
a[i]:=random(10); // случайными числами от 0 до 9
for i:=1 to N do // выведем массив на экран
write(a[i], ' ');
writeln;
min:=a[1]; // начальное значение для минимума
max:=a[1]; // ...и максимума
for i:=2 to N do // найдём максимум и минимум
begin
if a[i]>max then max:=a[i];
if a[i]<min then min:=a[i];
end;
writeln('max=',max,' min=',min); // выведем найденные значения максимума и минимума
// обменяем все максимумы на минимумы, а минимумы - на максимумы
writeln('After changing max and min:');
for i:=1 to N do
if a[i]=min then a[i]:=max
else if a[i]=max then a[i]:=min;
for i:=1 to N do
write(a[i], ' ');
writeln;
readln;
end.
 |
Ответ отправил: Егор (статус: 10-ый класс)
Время отправки: 28 февраля 2010, 14:45
|
Мини-форум вопроса
Всего сообщений: 6; последнее сообщение — 22 февраля 2010, 13:33; участников в обсуждении: 3.
21 февраля 2010, 20:08: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.
|
IlluminatI (статус: 2-ой класс), 21 февраля 2010, 20:44 [#1]:
менять только один максимальный элемент на минимальный, или все?
|
|
IlluminatI (статус: 2-ой класс), 21 февраля 2010, 20:49 [#2]:
найти максимальный и минимальный элемента можно довольно просто:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
N = 10;
var
a: array [1..n] of integer;
i: integer;
min, max: integer; // минимальный и максимальный элементы
begin
randomize;
for i:=1 to n do
a[i]:=random(50);
// поиск минимума в массиве
min:=a[1];
for i:=1 to n do
if a[i]<min then min:=a[i];
// поиск максимума в массиве
max:=a[1];
for i:=1 to n do
if a[i]>max then max:=a[i];
end.
|
|
IlluminatI (статус: 2-ой класс), 21 февраля 2010, 21:41 [#4]:
Ок
|
|
Яуген Таляныч (статус: Посетитель), 22 февраля 2010, 12:25 [#5]:
Переменную цикла нужно менять не от 1, а от 2. В примере не запоминается индекс максимального и минимального элемента, а без этого исходная задача не выполняется. Поиск min и max можно делать в одном цикле.
|
|
IlluminatI (статус: 2-ой класс), 22 февраля 2010, 13:33 [#6]:
Гена Гутницкий, можно и в одном, но яразбил на две подзадачи, чтобы было более понятен алгоритм. Не всегда требуется найти и минимальный и максимальный элемент.
Насчет цикла вы правы, но это уже оптимизация
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|