Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2008, 20:12   #1
Useless
Новичок
Джуниор
 
Регистрация: 28.10.2008
Сообщений: 1
По умолчанию сортировка частей массива(паскаль)

народ, помогите пожалусто найти ошибку
задача:Преобразовать одномерный массив таким образом, чтобы сначала располагались все элементы, модуль которых меньше 2, а потом – все остальные. Упорядочить каждую часть массива по возрастанию, используя алгоритм сортировки методом прямого выбора.
моя прога:
Код:
program lab5;
const n=10;
var a,b:array [1..n] of real;
    i,inul,p,k,j:integer;
    s:real;
    t,z,f,x:integer;
    min, minj:real;
begin
.......
{ну тут вводим массив а}
.......
for i:=1 to n do
  begin
  if abs(a[i])<2 then
    begin
    k:=k+1;
    b[k]:=a[i];
    j:=k+1;
    end;
  end;
for i:=1 to n do
   begin
    if abs(a[i])>=2 then
    begin
    b[j]:=a[i];
    j:=j+1;
    end;
   end;
for i:=1 to k-1 do
 begin
 t:=i; min:=b[i];
 for z:=i+1 to k do
  if b[z]<min then
   begin
   t:=z;
   min:=b[t];
   end;
 b[t]:=b[i];
 b[i]:=min;
 end;
for i:=k+1 to j-2 do
 begin
 f:=i; minj:=b[i];
 for x:=k+2 to j-1 do
  if b[x]<minj then
   begin
   f:=x;
   minj:=b[f];
   end;
 b[f]:=b[i];
 b[i]:=minj;
 end;
for i:=1 to j-1 do
writeln(b[i]:7:5)
end.
у меня не работает самая последняя часть, где сортировка второй части массива вернее, работает, но криво, сортирует кусками как захочется)) поможете?
Useless вне форума Ответить с цитированием
Старый 18.11.2008, 09:19   #2
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

1) зачем заводить второй массив, когда можно прямо в первом переставлять? и при этом за один проход сделается только не забудь запомнить номер
2) при сортировке просто меняй местами с текущим проверяемый элемент, если a[i] > a[j], о5 таки дополнительные переменные зачем?
3) ну и видимо вторая сортировка неправильная потому что в for x:=k+2 to j-1 do вместо k+2 надо писать i+1
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль.Сортировка массива Никита35 Помощь студентам 12 24.10.2012 20:13
Сортировка массива на Си Покемон Общие вопросы C/C++ 2 01.11.2008 08:24
Сортировка массива Kraven Общие вопросы Delphi 3 25.06.2008 18:22
Сортировка массива...? Roberto Помощь студентам 2 11.04.2008 13:32
Сортировка массива RIO Помощь студентам 1 05.04.2008 17:39