Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Pascal, задача (http://www.tehnari.ru/f41/t96739/)

pashasnuff 02.06.2014 21:27

Pascal, задача
 
Сделал подпрограмму для того чтобы в векторе на первые позиции переставить отрицательные элементы, но вот ошибку найти не могу, помогите пожалуйста
Код:

Function F:real;
{+$F}
Function F(x:real):real;
begin
f:=x;
end;
{-$F}

Procedure Razd(var a:Vect;m:byte;F:REAL;k:byte);
var
 i,j:byte;
 x:real;
 p:boolean;
begin
 i:=1;
 j:=m;
 while i<j do
 begin
  if a[i]>=0 then
  begin
  p:=true;
    while (j>i) and (p=true) do
    if a[j]<0 then
      begin
      x:=a[i];
      a[i]:=a[i+1];
      a[i+1]:=k;
      p:=false;
      end;
      end;
      j:=j-1;
    end;
      i:=i+1;
  end;
  begin
if j=m then
  begin
    k:=J+1;
    end
      else
    begin
      If p=true then
      begin
      k:=i-1;
      end
      else
      begin
      k:=j;
    end;
    end;
    end;

Где F - заданная внешняя функция
А(М) - вектор
К - параметр которому присваивается номер того элемента , с которого начинается вторая часть переставленного массива.


Прошу помощи.

Vladimir_S 03.06.2014 11:39

Про всё, что связано с буквой F, я ни бельмеса не понял, ни в смысле "функции", ни в смысле параметра процедуры. То есть не понял настолько, что и пытаться бесполезно. А вот по массиву - хотелось бы уточнить задание: допустимо ли произвольное расположение элементов в новом массиве (лишь бы сначала отрицательные), либо массив должен быть упорядочен, либо порядок следования как положительных, так и отрицательных элементов должен быть сохранен, либо порядок следования требуется сохранить для какой-либо одной группы?

pashasnuff 03.06.2014 13:58

Вложений: 1
Массив не должен быть упорядочен после этой ПП, а вот и картинка с заданием для этой ПП, в самом низу.

Vladimir_S 03.06.2014 14:26

Знаете... я в некоторой растерянности. Потому что сколько имею дело с Паскалем, но такого, чтобы имя внешней функции загонять в список формальных параметров процедуры - не видел. Кто-то из нас, либо я, либо Ваши преподы, того...
Ну ладно, а не хотите рассмотреть такой вариант (функцию нужно задать отдельно):
Код:

Procedure Razd(var a:Vect; m:byte; var k:byte);
var:
 i,p,q:byte;
 b,c:Vect;
begin
 p:=0;
 q:=0;
 for i:=1 to m do
  if F(a[i])<0 then
  begin
    Inc(p);
    b[p]:=a[i];
  end;
  else
  begin
    Inc(q);
    c[q]:=a[i];
  end;
 for i:=1 to p do a[i]:=b[i];
 for i:=1 to q do a[p+i]:=c[i];
 k:=p+1;
end;


pashasnuff 03.06.2014 17:09

Благодарю!


Часовой пояс GMT +4, время: 00:04.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.