2 / 2 / 1
Регистрация: 28.01.2010
Сообщений: 71
1

В одномерном массиве все отрицательные элементы переместить в начало массива

29.03.2010, 20:43. Показов 23188. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Не использовать дополнительный массив.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2010, 20:43
Ответы с готовыми решениями:

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец...

В одновременном массиве все отрицательные элементы переместить а начало, а остальные — в конец
написать программу

Все отрицательные элементы переместить в начало массива
1. В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные в...

В одномерном массиве отрицательные элементы, имеющие четный порядковый номер, переписать в начало массива
Пожалуйста помогите! В Турбо Паскале вроде всё понятно, а решить лабораторную не могу... Задача...

7
Платежеспособный зверь
8924 / 4352 / 1642
Регистрация: 28.10.2009
Сообщений: 11,567
29.03.2010, 22:42 2
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от JD Stive Посмотреть сообщение
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования. Не использовать дополнительный массив.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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.
5
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 8
08.12.2011, 16:13 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
program my;
const n=10;
var a:array[1..n] of integer;
    i,s,k,temp:integer;
 
BEGIN
 
 write('Введите ',n,' элементов массива: ');
 for i:=1 to n do
  read(a[i]);
 
 s:=0;//количество отрицательных элементов в массиве
 k:=1;//номер сдвигаемого элемента
 
 while(k<=n) do
  begin
   while (a[k]>=0) do
    inc(k);
   if k<=n then
    if k<>s+1 then
     begin
      temp:=a[k];
      for i:=k downto s+2 do
       a[i]:=a[i-1];
      a[s+1]:=temp;
      inc(s);
      inc(k);
     end
    else
     begin
      inc(s);
      inc(k);
     end;
  end;
 if s=0 then
  writeln('В массиве нет отрицательных элементов')
 else
  begin
   writeln('В массиве ',s,' отрицательных элементов');
   write('Новый массив выглядит так: ');
   for i:=1 to n do
    write(a[i],' ');
  end;
END.
0
15 / 15 / 4
Регистрация: 17.06.2012
Сообщений: 274
11.08.2012, 21:55 4
кот Бегемот,
У меня такая же задача. Я смог разобрать код, только не понимаю зачем нужна 15 строчка, ведь с 16 по 22 строчку i не где не используется.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
12.08.2012, 07:48 5
Цитата Сообщение от Leonman Посмотреть сообщение
строчку i не где не используется
Так она сама себя использует поскольку она заставляет выполнять следующий цикл ровно n раз.
1
15 / 15 / 4
Регистрация: 17.06.2012
Сообщений: 274
12.08.2012, 20:10 6
Puporev,
Понятно. Большое спасибо.
0
1 / 1 / 0
Регистрация: 25.09.2014
Сообщений: 125
30.09.2014, 20:52 7
Подскажите пожалуйста, а как сделать чтобы перемещалось только первые n отрицательных элементов?
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.09.2014, 21:07 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
uses crt;
const max=100;
var a:array[1..max]of integer;
    m,n,i,s,k,j,x:integer;
begin
clrscr;
randomize;
repeat
write('Размер масива до ',max,' m=');
readln(m);
until m in [1..max];
writeln('Исходный массив:');
s:=0;
for i:=1 to m do
 begin
  a[i]:=-50+random(100);
  write(a[i]:4);
  if a[i]<0 then s:=s+1;
 end;
writeln;
if s=0 then
 begin
  writeln('В массиве нет отрицательных элементов');
  readln;
  exit
 end;
write('Введите количество отрицательных для перестановки n=');
readln(n);
if n>=s then
 begin
  writeln('В массиве только ',s,' отрицательных элементов');
  writeln('они и будут переставлены');
 end;
k:=0;
for i:=1 to m do
if a[i]<0 then
 begin
  k:=k+1;
  if k<=n then
   begin
    x:=a[i];
    for j:=i downto k+1 do
    a[j]:=a[j-1];
    a[k]:=x;
   end;
 end;
writeln('Перестановка:');
for i:=1 to m do
write(a[i]:4);
readln
end.
0
30.09.2014, 21:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2014, 21:07
Помогаю со студенческими работами здесь

В одномерном массиве все отрицательные элементы переместить в начало, а остальные-в конец
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные-в конец с...

В одномерном массиве все отрицательные элементы переместить в начало массива
в одномерном массиве все отрицательные элементы переместить в начало массива, а остальные - в конец...

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец...

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец с сохранением порядка следования
Здравствуйте форумчане! Подскажите, как решить данные задания. Отстаю от группы, а так и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru