Массивы на паскале

программирование pascal делфи паскаль

Ребята помогите пожалуйста;
Ввести массив целых чисел из n элементов (задано константой).Переместить все отрицательные элементы в конец массива. Вывести массивна экран

набросал такой код, на могу понять, что не так:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

const n=10;
var
m:array[1..n] of integer;
i,x,j,k:integer;

begin
{ TODO -oUser -cConsole Main : Insert code here }
for i:=1 to n do
begin
write('m[',i,']=');
readln(m[i]);
end;
k:=11;
for i:=1 to n do
if m[i]<0
then begin
Dec(k);
x:=m[i];
for j:=i to k do
m[j]:=m[j+1];
m[k]:=x;
end;
writeln;
for i:=1 to n do writeln(m[i]);
readln;

end.

Примечание:
я пробывал сортировку методом обмена (пузырька);
Обрабатывал так же в цикле результат работы почему то такой же получается (неправильный);
что то вроде:
c:=m[j];
m[j]:=m[j+1];
m[j+1]:=c;
все равно не то получается;

Примечание:
Ошибка логическая;
Я писал это на консоли делфи;
До это задания я выполнял похожее на это, так же нужно было переместить нулевые элементы в начало, и всё работало;
А тут не понятно;
Компилятор не ругается;

Примечание:
Ребят, ну что?)
Ответы:
ну так вроде норм... только кусок про замену какой то странный...
а чего вообще выдумывать?... метод сортировки сделай любой... у тебя ведь в задании не написано что другие элементы двигать нельзя)
Хоть бы написал что за проблема у тебя - ошибку дает компилятор или что-то еще...
Или ты просто взял чужой код и нифига в нем сам не понимаеш? :)))
Скорей всего ты что-то в методе пузырька напутал. Я написал такой код, откомпилировал, вроде работает, но на всякий случай проверь:
Начну сразу с Begin, какие переменные новые, то опиши их.
for i := 1 to n do readln(m[i]); {1}
for i := 1 to (n-1) do {2}
  begin a := m[i];
             for x := i to n do
       if m[x]>=a then
          begin k := m[x];
                     b := x;
                     a := k;
           end;
          c := m[i];
          m[i] := k;
          m[b] := c;
end;
Далее на экран выводишь.
procedure SortIntArray(Arr: array of integer);
var
 I, J, tmp: Integer;
begin
 for I := Low(Arr) to High(Arr) do
   for J := I +1 to High(Arr) do
     if Arr[I] < Arr[J] then
     begin
       tmp := Arr[J];
       Arr[J] := Arr[I];
       Arr[I] := tmp;
     end;
end;
const n = 5;
var
 a, o: Array[1..n] of Integer;
 i, x, k1, k2: Integer;
begin
 for i := 1 to n do begin
   ReadLn(x);
   if x >= 0 then begin
     Inc(k1); a[k1] := x;
   end
   else begin
     Inc(k2); o[k2] := x;
   end;
 end;
 for i := 1 to k2 do a[i + k1] := o[i];
 for i := 1 to n do WriteLn(a[i]);
 ReadLn;
end.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.