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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2010, 17:01   #1
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию pascal. массив. перестановка

Дан массив из N целых чисел. Сформировать массив M, в который поместить сначала все нулевые элементы исходного массива, затем- отрицательные элементы, затем положительные элементы.


в это программе нулевые-> положит->отрицат
помогите переделать
и если можно то зделать её проще?
Код:
program p2;
label 1;  {METKA}

TYPE mass= array [1..100] of real; {pishem, chto eto odnomernyy massiv}

{***nachalo oblasti s PROCEDURAMI***}
procedure copt (n:integer; Var x:mass);{procedura SORTIROVKI}
procedure obmen(var a,b:real); {procedura OBMENA}
var c:real;
begin
c:=a;  //??
a:=b;
b:=c;
end;
var i:integer;
swop:boolean; //??
begin
repeat
swop:=false;
for i:=1 to n-1 do
if x[i]>x[i+1] then begin
obmen(x[i],x[i+1]);
swop:=true;
end;
n:=n-1;
until not swop;
end;

Procedure vctavka (N,K:integer; Z:real; Var X:mass); {procedura VSTAVKI}
Var j:integer;
begin
For j:=N downto K do X[j+1]:=X[j];
X[K]:=Z;
End;

Procedure delet (N,K:integer; Var X:mass); {procedura UDALENIYa}
Var i:integer;
begin
For i:=k+1 to N do x[i-1]:=x[i];
end;

{***KONEC oblasti s PROCEDURAMI***}

var m:mass;  {ispol'zuemyy massiv}
    i,n:integer;
    wr:real;

begin
writeln ('razmer massiva:');
readln (n);
writeln ('N:');
for i:=1 to n do
read (m[i]);
writeln;
copt (n,m); {sortiruem massiv}
if m[1]=0 then goto 1 else begin {proveryaem est' li na pervom meste massiva otricatel'noe chislo}
repeat {*** esli est', to perestavlyaem eto chislo v konec massiva  }
wr:= m[1];
Delet (n,1,m); {udalyaem s pervogo mesta}
vctavka (n,n,wr,m); {vstavlyaem v konec}
until m[1]=0; {*** do teh por, poka na pervom meste ne okazhetsya "0" }
end;

1: writeln ('M:');
for i:=1 to n do write (m[i],' ');
readln ;

end.


Дан массив вещественных чисел. Указать позицию последнего экстремального элемента (т.е. минимального или максимального)

вот нахождение мах и мин
а как последнего экстримального не представляю

Код:
var
A:array [1..100] of integer;
max,min,n,i:integer;

begin
write('n=');
readln (n);

for i:=1 to n do
begin
read (a[i]);
write(a[i],' ');

end;

max:=a[1];
for i:=1 to n do
if a[i]>max
then max:=a[i];

writeln;
write ('max=', max);

min:=a[1];
for i:=1 to n do
if a[i]<min
then min:=a[i];

writeln;
write ('min=', min);
end.

Последний раз редактировалось vykker; 23.05.2010 в 17:06.
vykker вне форума Ответить с цитированием
Старый 23.05.2010, 17:30   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

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

Последний раз редактировалось Grag; 23.05.2010 в 17:37.
Grag вне форума Ответить с цитированием
Старый 23.05.2010, 17:42   #3
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

можно увидеть эту программу??
vykker вне форума Ответить с цитированием
Старый 23.05.2010, 17:44   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Чтобы увидеть программу - ее надо сначала написать.
Но просто так писать программы мне с некоторых пор уже не интересно...

С моим резюме и портфолио можно ознакомиться в соответствующих разделах на моем сайте:
http://igor-bachin.narod.ru

или по этим ссылкам:

http://www.autsorser.ru/index.php?action=rsm&user=59
http://www.autsorser.ru/index.php?action=prtfl&user=59

Контакты:
e-mail: delmas-61@mail.ru
icq: 585281783
Skype: delmas61
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 23.05.2010, 17:47   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Какие страшные действия происходят в первой проге.
Код:
uses
   crt;
var
  c,N,i:integer;
  mas1,mas2:array [1..20] of integer;
begin
clrscr;
randomize;
write('Введите количество элементов массива: ');
readln(N);
writeln('Исходный массив: ');
for i:=1 to N do
begin
mas1[i]:=random(10)-2;
write(mas1[i]:2,' ');
end;
c:=0;
for i:=1 to N do
if mas1[i]=0 then
begin
inc(c);
mas2[c]:=mas1[i]
end;
for i:=1 to N do
IF mas1[i] < 0 then
begin
inc(c);
mas2[c]:=mas1[i];
end;
for i:=1 to N do
if mas1[i]>0 then
begin
inc(c);
mas2[c]:=mas1[i]
end;
writeln;
writeln('Результирующий массив: ');
for i:=1 to N do
begin
write (mas2[i]:2,' ');
end;
readkey;
end.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 23.05.2010, 17:51   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Это за три прохода исходного массива.
А теперь сделай тоже самое, но за ДВА прохода исходного массива.
Поставлю положительный отзыв!
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 23.05.2010, 17:59   #7
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

спасибо!))
vykker вне форума Ответить с цитированием
Старый 23.05.2010, 18:02   #8
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

а что нужно сделать со второй?
vykker вне форума Ответить с цитированием
Старый 23.05.2010, 18:03   #9
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Цитата:
Это за три прохода исходного массива.
А теперь сделай тоже самое, но за ДВА прохода исходного массива.
Поставлю положительный отзыв!
Я пишу не за отзывы а ради интереса.В этом вся фишка.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 23.05.2010, 18:07   #10
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Скоро этот альтруизм закончится... И начнешь писать за деньги!
А теперь сделай тоже самое, но за ДВА прохода исходного массива, за интерес...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив pascal neBu4kaMaXiM Помощь студентам 2 30.04.2010 16:54
pascal массив dante92 Помощь студентам 1 02.03.2010 21:21
pascal массив Fornarina Помощь студентам 52 27.12.2009 15:57
Двумерный массив, перестановка столбцов с max и min элементами (pascal) Mirk Помощь студентам 2 25.05.2009 20:33
pascal массив Fornarina Помощь студентам 3 08.02.2009 18:38