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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2012, 00:15   #1
Bulletinn
 
Регистрация: 03.10.2012
Сообщений: 5
Вопрос Сортировка по неспаданию

Нужно отсортировать вектор Х по неспаданию, а этого не происходит. Подскажите где ошибка в процедуре сортировки...
Код:
program prLab3;
 uses crt;
 const n=6;
 var     i,j,k: 0..n; imax,jmax: byte;
    sum,max,fun,prom: real;
                   A: array [1..n,1..n] of real;
                   X: array [1..n] of real;
 procedure line;
     var line: byte;
    begin
     textcolor(green);
     for line:=1 to 40 do write('_');
     writeln;
     textcolor(white);
    end;
 procedure sort(var B: array of real; m: byte);
    var i,j,imin: byte;
             min: real;
    begin
     for i:=1 to m-1 do
      begin
       min:=B[i];
       imin:=i;
       for j:=i+1 to m do
        begin
         if B[j]<min then
          begin
           min:=B[j];
           imin:=j;
          end;
         B[imin]:=B[i];
         B[i]:=min;
        end;
      end;
    end;
 function fx(i,j: byte): real;
    begin
     fx:=(3.7-j-2)*(i-4.3*j)-4.7*i;
    end;
begin
 ClrScr;
 line;
 Writeln('Matrix A:');
 line;
 max:=0;
 for j:=1 to n do max:=max+fx(i,j);         {The sum of elements of 1-st line}
 imax:=1;
 for i:=1 to n do
  begin
   sum:=0;
   for j:=1 to n do
    begin
     A[i,j]:=fx(i,j);                       {Filling the matrix €}
     write(A[i,j]:6:2,'   ');
     sum:=sum+A[i,j];                       {The sum of elements of i-th line}
    end;
   if sum>max then                          {Search of a line with the max sum}
    begin
     imax:=i;
     max:=sum;
    end;
   writeln;
  end;
 readkey;
 line;
 writeln('Vector X:');
 line;
 {for i:=1 to n do X[i]:=A[imax,i]; }     {Filling a vector}
 for i:=1 to n do readln(x[i]);
 sort(X,n);                             {Vector X sorting}
 max:=abs(2*x[1]+1)-abs(x[1]);          {g(x). Begin}
 for i:=2 to n do
  begin
   fun:=abs(2*x[i]+1)-abs(x[i]);
   if fun>max then
    begin
     max:=fun;
     imax:=i;
    end;
  end;                                  {g(x). End}
 for i:=1 to n do write(X[i]:6:2,'   ');
 readkey;
 writeln;
 line;
 writeln('g(x)=',chr(179),'2x+1',chr(179),'-',chr(179),'x',chr(179),';');
 writeln('g(',x[imax]:0:2,')=',max:0:2,' ;');
 readkey;
end.

Последний раз редактировалось Bulletinn; 13.11.2012 в 00:23.
Bulletinn вне форума Ответить с цитированием
Старый 13.11.2012, 09:48   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не знаю, что у Вас там навороченно.
возьмите процедуру сортировки из этого кода:
Код:
uses CRT;

 const n=6;
 var     
    i,j,k: 0..n; imax,jmax: byte;
    sum,max,fun,prom: real;
    A: array [1..n,1..n] of real;
    X: array [1..n] of real;

 procedure line;
     var line: byte;
    begin
     textcolor(green);
     for line:=1 to 40 do write('_');
     writeln;
     textcolor(white);
    end;

 procedure sort(var B: array of real; m: byte);
    var i,j  : byte;
        temp : real;
        lowB, HighB : integer;
    begin
     lowB := Low(B);
     HighB := High(B);
     for i:=lowB to HighB-1 do
       for j:=i+1 to HighB do
         if B[i]>B[j] then
          begin
           temp := B[i];
           B[i] := B[j];
           B[j] := temp;
          end;
    end;

begin
 Randomize;
 WriteLn;
 Write('X berofe sort: ');
 for i:=1 to n do begin
   x[i] := Random(100)/(random(100)+1);
   Write(X[i]:0:3,' ');
 end;
 WriteLn;

 sort(X,n);                             {Vector X sorting}

 Write('X after sort: ');
 for i:=1 to n do
   Write(X[i]:0:3,' ');
 WriteLn;

 readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2012, 23:21   #3
Bulletinn
 
Регистрация: 03.10.2012
Сообщений: 5
По умолчанию

К сожелению ваша процедура также не хотела сортировать. Пришлось вставить свою сортировку непосредственно в программу и всё заработало, но в любом случае спасибо за помощь.
Bulletinn вне форума Ответить с цитированием
Старый 15.11.2012, 06:25   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
    lowB := Low(B);
     HighB := High(B);
Это уже не паскаль....
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 15.11.2012, 08:37   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Sciv
Цитата:
Код:
    lowB := Low(B);
     HighB := High(B);
Это уже не паскаль....
А что это, простите? Почему Вы сделали такой вывод?

BTW, я программку прогонял отлаживал в TurboPascal, если что..


Цитата:
Сообщение от Bulletinn
К сожелению ваша процедура также не хотела сортировать. Пришлось вставить свою сортировку непосредственно в программу и всё заработало, но в любом случае спасибо за помощь.
Да не за что. Только так не бывает, что одна и та же программа у кого-то работает, у кого-то не работает...
Впрочем, раз Вы свою проблему решили, то и хорошо, остальное уже лирика...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.11.2012, 11:25   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
А что это, простите? Почему Вы сделали такой вывод?
Серж, простите, туплю с утра жутко Паскаль, конечно же
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 15.11.2012, 11:35   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sciv, а ничего страшного, бывает!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32