Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
vladik12
0 / 0 / 0
Регистрация: 24.09.2013
Сообщений: 1
1

Преобразовать массив К размером n таким образом, чтобы элементы, равные нулю, располагались после всех остальных

28.09.2013, 01:35. Просмотров 933. Ответов 8
Метки нет (Все метки)

ребят, паскаль со школы не понимал, а тут лаба. помогите, пожалуйста

Добавлено через 28 секунд
Преобразовать массив К размером n таким образом, чтобы элементы, равные нулю, располагались после всех остальных.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 01:35
Ответы с готовыми решениями:

Преобразовать массив так, чтобы элементы, равные нулю, располагались после всех остальных
преобразовать массив таким образом, чтобы элементы, равные нулю, располагались...

Преобразовать массив так, чтобы элементы, равные нулю, располагались после всех остальных
Помогите пожалуйста решить: Преобразовать массив К размером n таким образом,...

Преобразовать массив так, чтобы элементы, равные нулю, располагались после всех остальных
нуждаюсь в помощи...

Преобразрвать массив таким образом, чтобы все его элементы, которые равны нулю и единице, располагались после всех остальных
Преобразрвать массив таким образом, чтобы все его элементы, которые равны нулю...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом все остальные
В одномерном массиве, состоящем из n целых элементов, вычислить 1. Минимальный...

8
erl27
897 / 745 / 832
Регистрация: 06.09.2013
Сообщений: 1,561
28.09.2013, 02:52 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  K, p: array[1..100] of integer;
  i, N, c: integer;
  
begin
  randomize;
  N := 15 + random(50);
  c := 0;
  writeln('Исходный случайный массив:');
  for i := 1 to N do
  begin
    k[i] := -10 + random(11); //случайный элемент [-10, 10]
    if k[i] <> 0 then begin inc(c); p[c] := k[i] end;
    write(' ', k[i])
  end;
  writeln; 
  writeln;
  writeln('Массив с нулями в конце (если они есть):');
  for i := 1 to c do write(' ', p[i]); //ненулевые элементы
  for i := 1 to N - c do write(' ', 0) //нулевые элементы
end.
Одно замечание: это случайный массив.
1
Isaeff
15 / 9 / 6
Регистрация: 04.12.2010
Сообщений: 33
28.09.2013, 03:13 3
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
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
uses crt;
const
   n=10;
var
   a,b: array [1..10] of byte;
   i,j: integer;
begin
   clrscr;
   randomize;
   for i:=1 to 10 do
   begin
      a[i]:=Random(5);
      writeln('a[',i,']=',a[i]);
   end;
 
   j:=1;
   for i := 1 to n do b[i] := 0;
   for i:=1 to n do
      if a[i] <> 0 then
      begin
         b[j]:=a[i];
         j:=j+1;
      end;
 
   for i:=1 to n do
      write(' ',b[i]);
   readln;
end.
0
erl27
897 / 745 / 832
Регистрация: 06.09.2013
Сообщений: 1,561
28.09.2013, 03:39 4
Тоже вариант, но, как мне кажется, так делать не желательно. В 17-й строчке кода ты задаешь новый массив b[i] с нулевыми элементами. Если у тебя только 10 элементов, то так можно, а если, к примеру, миллионы, то это уже лишний ход. Ведь нам знать нужно не сами элементы, а только их количество.
0
Isaeff
15 / 9 / 6
Регистрация: 04.12.2010
Сообщений: 33
28.09.2013, 04:00 5
Код не мой. Ссылка вверху
0
erl27
897 / 745 / 832
Регистрация: 06.09.2013
Сообщений: 1,561
28.09.2013, 04:31 6
Извини, я ссылку не заметил (недавно зарегистрировался). Это просто модератор отредактировал уже существующий код.
0
Isaeff
15 / 9 / 6
Регистрация: 04.12.2010
Сообщений: 33
28.09.2013, 04:36 7
Я никак не могу написать рабочую прогу.
Идеи с использованием
Pascal
1
2
k[i]:=k[i+1];
k[i+1]:=0;
или со сдвигами не прошли.
Хочется сделать именно преобразование массива, без использования второго массива, или фокусов с выводом.
0
Puporev
Модератор
55411 / 42542 / 29396
Регистрация: 18.05.2008
Сообщений: 100,636
28.09.2013, 07:48 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
uses crt;
const nmax=100;
var a:array[1..nmax]of integer;
    n,i,k,j,x:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=-2+random(5);
  write(a[i],' ');
 end;
writeln;
writeln;
k:=0;
for i:=n downto 1 do
if a[i]=0 then
 begin
  k:=k+1;
  x:=a[i];
  for j:=i to n-k do
  a[j]:=a[j+1];
  a[n-k+1]:=x;
 end;
writeln('Перестановка:');
for i:=1 to n do
write(a[i],' ');
readln
end.
1
erl27
897 / 745 / 832
Регистрация: 06.09.2013
Сообщений: 1,561
28.09.2013, 14:36 9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Если со сдвигами назад, то мой код можно преобразовать так:

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
var
  K: array[1..100] of integer;
  i, N, c: integer;
  
begin
  randomize;
  N := 15 + random(50);
  writeln('Исходный случайный массив:');
  for i := 1 to N do
  begin
    k[i] := -10 + random(11); //случайный элемент [-10, 10]    
    write(' ', k[i]) //выводим его
  end;
  writeln; 
  writeln;
  writeln('Массив с нулями в конце (если они есть):'); 
  i := 1;
  c := 0; //сначала количество ненулевых элементов равно 0
 { Ненулевые элементы: }
  while i < N + 1 do
  begin 
    if k[i] <> 0 then //если элемент ненулевой
    begin 
      inc(c); //то увеличиваем его номер на 1
      k[c] := k[i] //и присваиваем элемент с новым индексом
    end;
    inc(i) //увеличиваем индекс основного массива на 1
  end;
 { Нулевые элементы: }
  for i := c + 1 to N do k[i] := 0;
 { Выводим новый массив: }
  for i := 1 to N do write(' ', k[i])
end.
0
28.09.2013, 14:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 14:36

Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные
Преобразовать массив таким образом, чтобы сначала располагались все элементы,...

Преобразовать массив К размером n таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях
Помогите с заданием. Преобразовать массив К размером n таким образом, чтобы в...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы
Преобразовать массив таким образом, чтобы сначала располагались все...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru