Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы! Помогите пожалуйста!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
bestlover
Упорядочить каждые вторы элементы всего массива по убыванию квадратов значений wacko.gif
Unconnected
<delеtеd by mе> <здесь был камень>
bestlover
Цитата
begin
writeln('Введите элемент массива №',c);
readln(mas1[c]);
end;
можно было через генератор значений массива сделать randomize, а так огромное спасибо!!! smile.gif smile.gif smile.gif
Lapp
Unconnected, ты полагаешь, что это:

for c:=1 to b-1 do
begin
if ((mas2[c]*mas2[c])>(mas2[c+1]*mas2[c+1])) then begin
buf:=mas2[c];
mas2[c]:=mas2[c+1];
mas2[c+1]:=buf;
end;
end;
readln;
end.
- есть сортировка?.. blink.gif

Зачем сортировать по возрастанию, а потом выводить сзаду наперед??
  writeln('Массив, отсортированный по убыванию квадратов значений каждого второго элемента');
for c:=1 to b do
begin
write(mas2[b-c+1],' ');
end;

Кроме того, задании сказано упорядочить массив, а не вывести упорядоченный.

И в конце концов, в задании сказано упорядочить данный массив, а не какой-то другой. Если ты использовал вспомогательный массив (что вообще-то не обязательно - только лишние действия и лишняя память), то положи элементы на место.

Самое последнее: если заменить квдраты на Abs - то, может, сэкономится немного времени.. И заведомо расширится область применимости программы smile.gif
Unconnected
Цитата
Unconnected, ты полагаешь, что это:

for c:=1 to b-1 do
begin
if ((mas2[c]*mas2[c])>(mas2[c+1]*mas2[c+1])) then begin
buf:=mas2[c];
mas2[c]:=mas2[c+1];
mas2[c+1]:=buf;
end;
end;
readln;
end.
- есть сортировка?..


Полагаю, да.

Цитата
Зачем сортировать по возрастанию, а потом выводить сзаду наперед??


Меня притягивают нестандартные и ресурсоёмкие решения smile.gif

Цитата
Кроме того, задании сказано упорядочить массив, а не вывести упорядоченный.


Сделал ручной ввод и вывод массива на экран для большей наглядности...

Lapp
Цитата(Unconnected @ 8.12.2008 16:24) *
Полагаю, да.
Ты ошибаешься. Про сортировку есть тема в FAQ, посмотри.

Цитата(Unconnected @ 8.12.2008 16:24) *
Меня притягивают нестандартные и ресурсоёмкие решения smile.gif
Ты предупреждай об этом того, кому отвечаешь, заранее.

Большая просьба выполнять п.7 Правил раздела Задачи.
Сможешь сам исправить решение или тебе помочь?
Unconnected
Насколько я понял, ТС остался доволен решением,поэтому, хоть оно и не на 100% соответствует условию, переписывать его у меня нет никакого желания. Можете даже "помочь".
Lapp
Цитата(Unconnected @ 8.12.2008 20:46) *
Насколько я понял, ТС остался доволен решением,поэтому, хоть оно и не на 100% соответствует условию, переписывать его у меня нет никакого желания. Можете даже "помочь".

Оно ровно на 0% соответствует условию. А желание писать неверное решение у тебя было? А потом еще бравировать своим невежеством. Чем остался (или не остался) доволен автор - его дело, но только на этом форуме тебе не позволят выдавать черное за белое. Берешься помогать человеку - не давай ему камень вместо хлеба..

Лично от меня -1 в репутацию.


bestlover
Уважаемый Lapp! Вы как предложете написать данную программу? Предложите свой вариант?
Lapp
Цитата(bestlover @ 9.12.2008 20:23) *
Предложите свой вариант?
- на конкурс?
В такой задаче не может быть вариантов. Может быть верное решение.

Выкладывай свои соображения. Тогда будут варианты..
amega
в каждой сортировки есть 2 цикла я ток видел 1

вот то что предлагаю я:

i:=1;
repeat
j:=i+2;
repeat
if sqr(a[i])<sqr(a[j]) then //проверяем условие
begin
x:=a[i];
a[i]:=a[i];
a[j]:=x;
end;
j:=j+2; //увеличуем на 2 поскольку через 1
until j>=count; //условие выхода из цикла
i:=i+2; //увеличуем на 2 поскольку через 1
until i>=count;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.