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

программирование программы 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.


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


Дополнение #2 13.07.2012, 14:34:28
Ошибка логическая;
Я писал это на консоли делфи;
До это задания я выполнял похожее на это, так же нужно было переместить нулевые элементы в начало, и всё работало;
А тут не понятно;
Компилятор не ругается;
Ответы:
Дык делай так, если религия позволит (:
Я в прошлом вопросе написал.
Замечу, что при сортировке не обязательно писать for i := 1 to n do ...
Достаточно for i := 1 to (n-1) do ... Иначе программа делает лишнюю работу.
розбивай завдання на функції...
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]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.