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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2011, 16:48   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию Поменять местами элементы одномерного массива

Дан одномерный массив, элементы которые меньше 0 переместить в левую часть массива (без их сортировки!) а элементы которые больше 0 в правую часть массива( также без сортировки), с помощью двух циклов "while".
Заранее спасибо!
P.S. язык Pascal
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 08.12.2011, 17:48   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от McFrey Посмотреть сообщение
Дан одномерный массив, элементы которые меньше 0 переместить в левую часть массива (без их сортировки!) а элементы которые больше 0 в правую часть массива( также без сортировки), с помощью двух циклов "while".
Заранее спасибо!
P.S. язык Pascal
Наработки то есть у вас?
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 08.12.2011, 21:29   #3
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

у меня есть наработки но только с помощью цикла for...а как осуществить это в while я к сожалению не знаю.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 08.12.2011, 21:30   #4
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Код:
var
a:array[1..100]of integer;
i,j,t,n:integer;
begin
randomize;
writeln('vvedite kol-vo elementov');
readln(n);
writeln('ishodnyj massiv');
for i:=1 to n do
begin
a[i]:=random(20)-10;
write(a[i],' ');
end;
writeln;
while i<=n do
begin
i:=j;
while (j<=n-1) and (a[j]>=0) and (a[j+1]<0)do 
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
end;
writeln('novyj massiv');
for i:=1 to n do
write(a[i],' ');
readln;
end.
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 08.12.2011, 22:38   #5
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от McFrey Посмотреть сообщение
Код:
while i<=n do
begin
   i:=j;
   while (j<=n-1) and (a[j]>=0) and (a[j+1]<0)do 
   begin
      t:=a[j]; 
      a[j]:=a[j+1]; 
      a[j+1]:=t;
   end;
Что вы пытаетесь сделать в помеченной красным строке? Что то я не понял, там же ничего не хранится, я имею ввиду в j.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 08.12.2011, 22:43   #6
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Код:
var
a:array[1..100]of integer;
i,j,t,n:integer;
begin
randomize;
writeln('vvedite kol-vo elementov');
readln(n);
writeln('ishodnyj massiv');
for i:=1 to n do
begin
a[i]:=random(20)-10;
write(a[i],' ');
end;
writeln;
for i:=1 to n do
for j:=1 to n-1 do
if (a[j]>=0)and(a[j+1]<0)then 
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
writeln('novyj massiv');
for i:=1 to n do
write(a[i],' ');
readln;
end.
я пытался модифицировать вот эту программу....в общем она правильная, работает, но мне нужно сделать тоже самое с помощью While
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 08.12.2011, 22:57   #7
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Код:
var
a:array[1..100]of integer;
i,j,t,n:integer;
begin
  randomize;
  writeln('vvedite kol-vo elementov');
  readln(n);
  writeln('ishodnyj massiv');
  for i:=1 to n do
  begin
    a[i]:=random(20)-10;
    write(a[i],' ');
  end;
  writeln;
  i:=1;
  while i<=n do
  begin
    j:=1;
    while j<=n-1 do
    begin
      if (a[j]>=0)and(a[j+1]<0)then
      begin
        t:=a[j];
        a[j]:=a[j+1];
        a[j+1]:=t;
      end;
      inc(j);
    end;
    inc(i);
  end;
  writeln('novyj massiv');
  for i:=1 to n do
    write(a[i],' ');
  readln;
end.
Пробуй.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 08.12.2011, 23:02   #8
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Огромное спасибо! А ведь я был близок...чуть-чуть фантазии не хватило)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 08.12.2011, 23:03   #9
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от McFrey Посмотреть сообщение
Огромное спасибо! А ведь я был близок...чуть-чуть фантазии не хватило)
Бывает!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# дан двумерный массив 9х9. найти наименьший и наибольший элементы массива и поменять их местами. Koksa Помощь студентам 1 10.10.2011 11:28
Поменять местами наименьший и наибольший элементы массива. KOPC1886 Помощь студентам 2 06.01.2011 21:02
Поменять местами элементы в TreeView RIO Общие вопросы Delphi 2 16.05.2010 02:30
дан двумерный массив и натуральные числа k и p,поменять местами элементы k и p столбцов массива np9Huk Помощь студентам 4 19.04.2010 12:59
Поменять местами элементы в массиве! Angel-dm Паскаль, Turbo Pascal, PascalABC.NET 5 14.04.2010 14:59