Консультация № 175201
13.12.2009, 17:46
0.00 руб.
0 7 0
Даны натуральное число n и вещественный массив из n чисел. Преобразовать массив по следующему правилу: все отрицательные элементы массива перенести в его конец, все положительные – в начало, все равные нулю – в середину, сохраняя исходное взаимное расположение, как среди отрицательных, так и среди всех остальных. Вспомогательный массив не использовать. помогите пожалуйста,так эта задачка и не получилась

Обсуждение

давно
Старший Модератор
31795
6196
14.12.2009, 15:00
общий
angel.nero:
Чем Вам ответ на Ваш вопрос 174541 не нравится?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
15.12.2009, 00:01
общий
проблемка в следующем: вот что прога мне выдает
0.902 3.015 -1.343 -0.696 1.662 2.608 -1.211 0.992 -3.231 0.093
0.902 3.015 -1.343 0.000 1.662 2.608 -1.211 0.000 -3.231 0.093
0.902 3.015 1.662 2.608 0.093 0.000 0.000 -1.343 -1.211 -3.231
а в задании Преобразовать массив по следующему правилу: все отрицательные элементы массива перенести в его конец, все положительные – в начало, все равные нулю – в середину
препод сказал что неправильно работает прога или он не прав????помогите разобраться
давно
Старший Модератор
31795
6196
15.12.2009, 10:47
общий
angel.nero:
0.902 3.015 -1.343 0.000 1.662 2.608 -1.211 0.000 -3.231 0.093
0.902 3.015 1.662 2.608 0.093 0.000 0.000 -1.343 -1.211 -3.231

Положительные, нулевые, отрицательные
или Вам не это было нужно?

Цитата: 309917
препод сказал что неправильно работает прога

Это наверное я тормознул, в программе реализована Глупая сортировка, а не ленивая. Перепутал, блин.

Она, как другие виды сортировок имеет право на жизнь. Её особенности один индекс и используется только один цикл.
Каждый раз, когда встретится неупорядоченная пара элементов происходит их перестановка и возврат в начало массива. Выход из цикла происходит, тогда когда все элементы упорядочены. Да, она не самая оптимальная, но реализуется очень просто.

Если ещё раз перечитать задание, то:
Даны натуральное число n и вещественный массив из n чисел -реализовано
Преобразовать массив по следующему правилу: -реализовано
сохраняя исходное взаимное расположение, -реализовано
Вспомогательный массив не использовать -реализовано

Помоему всё из задания реализовано, метод сортировки не указывался.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
15.12.2009, 12:56
общий
исодя из 0.902 3.015 -1.343 0.000 1.662 2.608 -1.211 0.000 -3.231 0.093
0.902 3.015 1.662 2.608 0.093 0.000 0.000 -1.343 -1.211 -3.231
а разве не должно быть примерно так: первая строка:
0.902 3.015 1.662 2.608 0.093 0.000 0.000 -1.343 -1.211 -3.231
или я чего-то не понимаю????помогите пожалуйста
давно
Старший Модератор
31795
6196
15.12.2009, 13:37
общий
angel.nero:
Специально для Вас переделал программку, чтобы она показывала ещё саму сортировку:
Код:
uses crt;
const
n=10;
var
a:array[1..n]of real;
b:real;
i:integer;
j:integer;{специально добавил}
begin
{создаем массив}
for i:=1 to n do
begin
a[i]:=10*random-5;
write(a[i]:7:3);
end;
writeln;
{контрольные пару нулей}
a[4]:=0;
a[8]:=0;
writeln('Begin:');
for i:=1 to n do
write(a[i]:7:3);
writeln;
i:=1;
{глупая сортировка}
while i<n do
begin
if ((a[i]<0)and(a[i+1]>=0))or((a[i]=0)and(a[i+1]>0))then
begin
b:=a[i];
a[i]:=a[i+1];
a[i+1]:=b;
{специально добавил}
for j:=1 to n do
begin
TextColor(7);
if (j=i)or(j=(i+1))then TextColor(15);
write(a[j]:7:3);
end;
writeln;
i:=1;
end
else
i:=i+1;;
end;
{вывод результата}
writeln('Stop:');
for i:=1 to n do
write(a[i]:7:3);
readln;
end.

У меня получился такой результат.

Весь вывод идет серым, белым подсвечиваются числа, которые обменивались на текущем этапе.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
16.12.2009, 19:55
общий
angel.nero:
Здали задание?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
25.12.2009, 00:07
общий
Зенченко Константин Николаевич:
да,большое вам спасибо!!!!
У меня есть ещё 2 задания,вы сможете помочь???
Форма ответа