Добрый вечер! Нужно реализовать сортировку массива через такой цикл: берем массив, находим max и min, min ставим в начало, max в конец. Первый и последний элементы отбрасываем. Затем с оставшимся массивом делаем то же самое и так далее. Вывод-отсортированный массив. Нужно использовать как можно меньше Begin и end.
Кому нужно?
Мне)
Дерзайте, напишите - похвастайтесь, а здешние форумчане подскажут оптимизацию.
program Ex;
const
N = 10;
var
a: array [1..N] of integer;
i, j, k, l, min, max: integer;
begin
for i := 1 to N do
a[i] := Random(1000);
writeln('Элементы массива a: ');
for i := 1 to N do
write(a[i], ' ');
min := a[1];
max := a[1];
begin
for i := 1 to N do
Readln(a[i]);
for j := 1 to N - 1 do
for i := 1 to N - j do
if a[i] < min then min := a[i];
if a[i] > max then max := a[i];
a[j]:=min;
a[n-j+1]:=max;
end;
write( max, ' ', min);
writeln;
for i := 1 to N do
write(a[i], ' ')
end.
А вы взяли и просто так воткнули их непонятно зачем
а вот тут они видимо как раз нужны
Спасибо! Но ничего не работает, массив должен быть сформирован по возрастанию
Так для начала надо как минимум добавить begin/end в циклы (поиск макс/мин видимо должен быть во втором/внутреннем цикле, а замена элементов в первом), сейчас последние 3 строки выше выполнятся один раз после циклов.
@AlexP То есть вот эту штуку менять?
Begin
for i := 1 to N do
write(a[i], ' ');
min := a[1];
max := a[1];
for j := 1 to N - 1 do
for i := 1 to N - j do
if a[i] < min then min := a[i];
if a[i] > max then max := a[i];
a[j]:=min;
a[n-j+1]:=max;
end;
@AlexP А как именно просмотреть сначала первый и последний, потом второй и предпоследний и так далее, через рекурсию?
Begin
for j := 1 to N - 1 do
for i := 1 to N - j do
for k:=0 to N do
min := a[1];
max := a[1];
if a[i] < min then min := a[i];
if a[i] > max then max := a[i];
a[k]:=min;
a[N-k+1]:=max;
end;
Привет! Чтобы узнать, что я могу сделать, наберите: @discobot cправка
.
вроде как минимум операторных скобок
program Ex;
const
N = 10;
var
a: array [1..N] of integer;
i, j, k, k1, min, max: integer;
begin
randomize;
for i := 1 to N do a[i] := Random(100);
writeln('Элементы массива a: ');
for i := 1 to N do write(a[i], ' ');
writeln;
for i :=1 to (N div 2) do
begin
min := i;
max := N+1-i;
for j := i to N+1-i do
if a[j]<=a[min] then min:=j else
if a[j]>a[max] then max:=j;
k:=a[min];k1:=a[max];
a[min]:=a[i];a[i]:=k;
a[max]:=a[N+1-i];a[N+1-i]:=k1;
end;
writeln;
for i := 1 to N do write(a[i], ' ')
end.
А в чем вообще прикол с минимальностью операторных скобок? Лишнее их наличие ни каких дополнительных исполнимых команд не генерирует
м.б. по тому же принципу, что - “товарищ солдат, вот вам лом, подметите плац”
p.s. тут нет тега для оффтопа? типа [off] или [offtop] ?
p.p.s. а что это за штука:
Видимо попытка найти хоть кого-то, кто поможет с задачей ))
А так вообще это бот с туториалом по основным возможностям движка, после регистрации он отправляет ЛС.
Может еще что-то умеет, хз )