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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2011, 16:37   #1
Carter
Пользователь
 
Регистрация: 21.08.2011
Сообщений: 15
По умолчанию работа с одномерным массивом

Нужно циклически сдвинуть положительные элементы массива, расположенные перед первым нулем на одну позицию влево
Carter вне форума Ответить с цитированием
Старый 04.12.2011, 16:45   #2
hiho
Форумчанин
 
Регистрация: 29.04.2008
Сообщений: 100
По умолчанию

Код:
nFind := 0;
while (nFind = 0) and (i <= N) do begin
   if (A[i] = 0) then nFind := i;
   inc(i);
end;
{ nFind - номер первого нулевого}
if (nFind > 0) then 
   for i := 1 to nFind - 1 do begin
      { приведите пример, каким образом производить сдвиг }  
      { например, если у нас первый элемент положительный, куда его сдвигать? } 
   end;
hiho вне форума Ответить с цитированием
Старый 04.12.2011, 18:38   #3
Carter
Пользователь
 
Регистрация: 21.08.2011
Сообщений: 15
По умолчанию

Пытался сделать по вашему примеру, но программа не работает (может я тупой ). Вот полный код моей программы:
PHP код:
uses crt;
type myarray=array[1..20of integer;
var 
mas myarray;
    
mncinteger;

procedure vybor(var ninteger);
begin
 repeat
  write
('Vvedite razmernost neobhodimogo massiva ot 1 do 20: ');
  
readln(n);
  if (
n<=0) or (n>20then writeln('Neverno zadana razmernost') else
   
begin
    writeln
('Vyberite sposob zapolneniya massiva:');
    
writeln('1 - s klaviatury');
    
writeln('2 - generator sluchainyh chisel');
    
readln(m);
    if (
m<>1) and (m<>2then writeln('Nepravilno vybrano znachenie');
   
end;
 
until (n<=20) and (n>0) and (m=1) or (m=2);
end;

procedure vvod_klaviatura (var mas : array [1..20of integerinteger);
var 
integer;
begin
 writeln
('Vvedite elementy massiva: ');
  for 
i:=1 to n do
   
read(mas[i])
end;

procedure vvod_random (var mas : array [1..20of integerinteger);
var 
integer;
begin
 randomize
;
  for 
i:=1 to n do
   
mas[i]:=random(100)-50;
end;


procedure vyvod (: array [1..20of integerinteger);
var 
integer;
 
begin
  write
('Massiv: ');
   for 
i:=1 to n do
    
write(a[i],'  ');
    
writeln(' ');
end;


procedure zadanie(var : array [1..20of integer);
var 
inFindinteger;
begin
 nFind 
:= 0;
 while (
nFind 0) and (<= n) do
  
begin
   
if (a[i] = 0then nFind := i;
   
inc(i);
  
end;
 
c:=a[i];
 if (
nFind 0then
  
for := 1 to nFind do
   
begin
    a
[i]:=a[i+1];
    
a[nFind]:=c;
   
end;
end;
  

{---
MAIN---}
begin
 clrscr
;
 
vybor(n,m);
  if 
m=1 then vvod_klaviatura(mas,n);
  if 
m=2 then vvod_random(mas,n);
 
vyvod(mas,n);
 
write('Elementy cyklicheski sdvinuty: ');
 
zadanie(mas);
 
readln;
end

Последний раз редактировалось Carter; 04.12.2011 в 18:42.
Carter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с одномерным массивом TvYown Помощь студентам 0 23.12.2010 20:52
Работа с одномерным массивом в СИ++ glagoff Помощь студентам 6 31.10.2010 21:02
Работа с одномерным массивом Roll1n Общие вопросы C/C++ 20 10.04.2010 18:35
работа с одномерным массивом _Solomon_ Помощь студентам 1 07.06.2007 12:06