Форум «Всё о Паскале» _ Задачи _ Массивы! Помогите пожалуйста!
Автор: bestlover 7.12.2008 15:10
Упорядочить каждые вторы элементы всего массива по убыванию квадратов значений
Автор: Unconnected 7.12.2008 18:17
<delеtеd by mе> <здесь был камень>
Автор: bestlover 8.12.2008 13:36
Цитата
begin writeln('Введите элемент массива №',c); readln(mas1[c]); end;
можно было через генератор значений массива сделать randomize, а так огромное спасибо!!!
Автор: Lapp 8.12.2008 14:11
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.
- есть сортировка?..
Зачем сортировать по возрастанию, а потом выводить сзаду наперед??
writeln('Массив, отсортированный по убыванию квадратов значений каждого второго элемента'); for c:=1 to b do begin write(mas2[b-c+1],' '); end;
Кроме того, задании сказано упорядочить массив, а не вывести упорядоченный.
И в конце концов, в задании сказано упорядочить данный массив, а не какой-то другой. Если ты использовал вспомогательный массив (что вообще-то не обязательно - только лишние действия и лишняя память), то положи элементы на место.
Самое последнее: если заменить квдраты на Abs - то, может, сэкономится немного времени.. И заведомо расширится область применимости программы
Автор: Unconnected 8.12.2008 20:24
Цитата
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. - есть сортировка?..
Полагаю, да.
Цитата
Зачем сортировать по возрастанию, а потом выводить сзаду наперед??
Меня притягивают нестандартные и ресурсоёмкие решения
Цитата
Кроме того, задании сказано упорядочить массив, а не вывести упорядоченный.
Сделал ручной ввод и вывод массива на экран для большей наглядности...
Автор: Lapp 8.12.2008 21:54
Цитата(Unconnected @ 8.12.2008 16:24)
Полагаю, да.
Ты ошибаешься. Про сортировку есть тема в FAQ, посмотри.
Цитата(Unconnected @ 8.12.2008 16:24)
Меня притягивают нестандартные и ресурсоёмкие решения
Ты предупреждай об этом того, кому отвечаешь, заранее.
Большая просьба выполнять п.7 Правил раздела Задачи. Сможешь сам исправить решение или тебе помочь?
Автор: Unconnected 9.12.2008 0:46
Насколько я понял, ТС остался доволен решением,поэтому, хоть оно и не на 100% соответствует условию, переписывать его у меня нет никакого желания. Можете даже "помочь".
Автор: Lapp 9.12.2008 0:59
Цитата(Unconnected @ 8.12.2008 20:46)
Насколько я понял, ТС остался доволен решением,поэтому, хоть оно и не на 100% соответствует условию, переписывать его у меня нет никакого желания. Можете даже "помочь".
Оно ровно на 0% соответствует условию. А желание писать неверное решение у тебя было? А потом еще бравировать своим невежеством. Чем остался (или не остался) доволен автор - его дело, но только на этом форуме тебе не позволят выдавать черное за белое. Берешься помогать человеку - не давай ему камень вместо хлеба..
Лично от меня -1 в репутацию.
Автор: bestlover 10.12.2008 0:23
Уважаемый Lapp! Вы как предложете написать данную программу? Предложите свой вариант?
Автор: Lapp 10.12.2008 2:43
Цитата(bestlover @ 9.12.2008 20:23)
Предложите свой вариант?
- на конкурс? В такой задаче не может быть вариантов. Может быть верное решение.
Выкладывай свои соображения. Тогда будут варианты..
Автор: amega 10.12.2008 3:40
в каждой сортировки есть 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;