• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Pascal, задача

pashasnuff

Новые
Регистрация
16 Апр 2014
Сообщения
51
Реакции
0
Баллы
0
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 - заданная внешняя функция
А(М) - вектор
К - параметр которому присваивается номер того элемента , с которого начинается вторая часть переставленного массива.


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

Вложения

  • UGVoC-vusas.webp
    UGVoC-vusas.webp
    26.7 KB · Просмотры: 85
Знаете... я в некоторой растерянности. Потому что сколько имею дело с Паскалем, но такого, чтобы имя внешней функции загонять в список формальных параметров процедуры - не видел. Кто-то из нас, либо я, либо Ваши преподы, того...
Ну ладно, а не хотите рассмотреть такой вариант (функцию нужно задать отдельно):
Код:
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;
 
Назад
Сверху